3

我认为这个问题被问了很多次,但是搜索它我只发现一些回复中的一些注释。
我知道文件通常由 OS+文件系统处理,但是有(或应该有)方法来改变它。其他大型数据库系统至少使用文件预分配并通过添加大块来增长。据我所知,MySQL 缺乏这种类型的功能(或者我的知识已经过时了?),它只能提供OPTIMIZE TABLE对文件内记录的碎片整理,但文件本身可能非常碎片化。

作为一个具体的问题,我有一个应该充当堆栈的表:很多INSERTs 和DELETEs,数据的生命周期很短(从几秒到几小时),堆栈的最大大小是已知的。表会经常被修改——每天数千次,而且还有其他活动表,所以这种情况会随着时间的推移导致磁盘布局非常碎片化。我目前的想法是预先分配整个堆栈表,然后使用顶部索引UPDATEs。

无论如何,除了我的具体问题(如果有一个解决方案也很好),有什么方法可以减少甚至消除 MySQL 数据文件的碎片整理(如果可能的话),MyISAM 和 InnoDB,最好是在 *nix 系统上? 原始设备至少是 InnoDB 的解决方案吗 ?

4

1 回答 1

0

如果您不需要堆栈以在服务器/mysql 重新启动后继续存在,并且它适合内存,请将表创建为 MEMORY 表。

--HHS

于 2013-02-22T07:57:32.463 回答