我认为这个问题被多次提出,但是在搜索中我在一些回复中只发现了一些注释
我知道文件通常由OS +文件系统处理,但有(或应该)方法来改变它。其他大型数据库系统至少使用文件预分配,并通过添加大块来增长。据我所知,MySQL缺乏这种类型的功能(或者我的知识已经过时了?)并且它只能提供OPTIMIZE TABLE
碎片整理文件中的记录,但文件本身可能非常支离破碎。
作为一个特定问题,我有一个表应该充当堆栈:很多INSERT
和DELETE
s,数据寿命很短(从几秒到几小时),堆栈的最大大小是已知的。该表将经常被修改 - 每天数千次,并且还有其他活动表,因此这种情况将导致磁盘的布局非常分散。我目前的想法是预先分配整个堆栈表,然后使用顶部索引和UPDATE
s。
无论如何,除了我的具体问题(对它也有一个解决方案也很好),有什么方法可以减少甚至消除MySQL数据文件的碎片整理(如果可能),MyISAM和InnoDB ,最好是在* nix系统上?并且原始设备至少是InnoDB的解决方案?
答案 0 :(得分:0)
如果您不需要堆栈在服务器/ mysql重启中生存,并且它适合内存,请将该表创建为MEMORY表。
- HHS