【问题标题】:How to prevent fragmentation of MySQL data files?如何防止 MySQL 数据文件的碎片化?
【发布时间】:2012-05-21 19:40:37
【问题描述】:

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

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

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

【问题讨论】:

  • 针对您的具体问题,您是否考虑过使用 NoSQL 数据库? Redis 看起来是满足您需要的不错选择。
  • @Sam:Redis 是否缺少数据库软件本身产生的碎片等这种特殊类型的问题?
  • Redis 是一个内存数据库,所以文件碎片不是问题。可能确实存在内存碎片,您必须检查这是否是您特定问题的问题。抱歉,我不能给你更具体的答案。

标签: mysql defragmentation


【解决方案1】:

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

--HHS

【讨论】:

    猜你喜欢
    • 2011-01-13
    • 2011-12-07
    • 2013-03-12
    • 2011-01-17
    • 2013-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多