5000万条数据的表,添加索引太费时间了

问题描述 投票:0回答:2

我正在处理一个拥有近 5000 万条数据(2GB 大小)的表。我需要优化性能。因此,当我通过 phpmyadmin 面板在列上添加索引时,表被锁定并导致该表上队列中的所有查询被阻塞,最终导致重新启动/终止所有查询。 (是的,我忘了提及我是在生产中这样做的。我的错!)

当我做了一些研究时,我发现了一些解决方案,例如创建重复表,但有其他方法吗?

mysql database indexing query-optimization
2个回答
1
投票

您可以按照以下步骤操作,

  1. 创建临时表
  2. 在第一个表上创建触发器(对于 插入、更新、删除),以便将它们复制到临时目录 表
  3. 小批量,迁移数据完成后,将表重命名为新的 表,然后删除另一个表

但是正如您所说,您是在生产中执行此操作,那么您需要在删除表并创建另一个表时考虑实时流量


0
投票

接受的答案是正确的,但是,正如 @RickJames 在评论中提到的 你可能想使用

pt-online-schema-change
,它可以为你做所有事情,并且可以做更多的黑魔法。它也经过了战斗考验。 它是 Percona ToolKit

的一部分
© www.soinside.com 2019 - 2024. All rights reserved.