非常大的表上的MySQL ALTER TABLE - 运行它是否安全?

10 mysql primary-key alter

我有一个带有400万行MyISAM表的MySQL数据库.我每周更新一次这个表约2000个新行.更新后,我然后改变这样的表:

ALTER TABLE x ORDER BY PK DESC
Run Code Online (Sandbox Code Playgroud)

我按主键字段按降序排列表.这对我的开发机器(带3GB内存的Windows)没有任何问题.有三次我在生产Linux服务器上成功尝试过它(512MB内存 - 并且每次大约6分钟就能实现结果排序表),最后一次尝试它我不得不在大约30分钟后停止查询并重建备份数据库.

一个512MB的服务器可以在这么大的表上处理那个alter语句吗?我已经读过创建临时表来执行ALTER TABLE命令.

问题:这个alter命令可以安全运行吗?改变桌子的预计时间应该是多少?

Dar*_*ent 0

我可能会创建一个按 PK 值排序的视图,这样一来,您就不需要在执行 ALTER 时锁定那个巨大的表。