繁体   English   中英

在使用innodb作为引擎的大表中添加键时如何优化?

[英]How to optimize when adding key to a big table, with innodb as engine?

有几百万行的表。 我提交以下查询:

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

这需要38分钟44.53秒!

我如何优化它以使其运行更快?

您不能真正使此查询更快。 但是您可以肯定可以做一些事情,以使您的应用程序不会停机太长时间。

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

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

如果表中发生的事务数量太大,那将是一个永无止境的循环。

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

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

我建议您编写一些脚本来为您完成此工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM