将innodb作为引擎添加到大表时如何优化?

时间:2013-05-05 08:57:34

标签: mysql innodb

有一张数百万行的表格。 我提交以下查询:

ALTER TABLE my_data ADD KEY `sex_birth` (`sex`, `birth`);

这需要38分44.53秒!

如何优化此功能以加快运行速度?

1 个答案:

答案 0 :(得分:0)

您无法更快地完成此查询。但是你肯定可以做一些事情,这样你的应用程序就不会长时间停机。

使用其他名称创建此表的副本,例如my_data_alter。在此表上运行alter。

您将需要已运行的所有更新/插入/删除的日志,因为您将副本带到完成alter的时间。然后,您必须将这些查询运行到my_data_alter

如果表中发生的交易数量太大,那将是一种永无止境的循环。

最后,您只需在一个查询中重命名这两个表。

我知道这会非常棘手。在非高峰时间做这种事情。

我建议你写一些为你完成这项工作的脚本..