在更改架构时,如何加快MySQL中的表重建速度?

时间:2011-09-27 19:19:56

标签: mysql performance optimization innodb

我有一个相对较大的MySQL InnoDB表(已压缩),我有时需要更改其架构(增加列大小或添加字段)。

对于具有数百万行的500 MB表,大约需要1小时,但服务器似乎不是很忙(CPU @ 5%,使用的RAM不多,I / O为2.5 MB / s)

该表未在生产中使用,因此同时没有并发请求。只有一个主索引(在前5列)和一个外键约束。

您对如何加快表格更改过程有什么建议吗?

2 个答案:

答案 0 :(得分:1)

改变存储引擎(到TokuDB之类的新一代引擎)似乎还有很长的路要走,直到InnoDB被“修复”。

答案 1 :(得分:0)

有助于了解确切的表和主键/索引定义,并且重要性较低,行计数到最接近的百万,尽管我猜,因为表只有500mb,它可能不到2000万行。此外,您更改表的方法 - 是创建新架构并插入其中,还是使用alter table等。

在使用像

这样的方法之前,我在这个领域取得了成功
  • 更改索引键组成,添加唯一键
  • 先删除索引,然后更改表,然后再添加索引。如果受到变化的影响,有时独立索引可能是真正的性能杀手。
  • 优化表格结构以删除不需要的或超大的列
  • 分离出数据(通常是列,但在某些情况下可以垂直分区),这些数据不会从可能发生变化的核心结构发生变化,因此您只能流失表格的一小部分