有什么方法可以弄清楚SQL查询在启动后何时会结束?换句话说,有什么方法可以计算出执行查询之前需要花费多少时间? (粗略估计是可以的!)

ALTER IGNORE TABLE mytbl ADD UNIQUE (c);

我在具有3500万条记录的innodb表上运行了此查询。 c是varchar(255)

该命令已经运行了10个小时,并且仍在运行。如果我快要结束了,我不想取消。

感谢您的帮助。谢谢!

最佳答案

摘自ServerFault解决方案:

解决方案是在事实表的表扫描中测量查询扫描行的速度。这由Handler_read_rnd_next状态变量显示。这是一种简单的观看方式(innotop是另一种便捷的方式):

mysqladmin extended -r -i 10 | grep Handler_read_rnd_next
-- ignore the first line of output...
| Handler_read_rnd_next             | 429224      |

因此,服务器每秒读取大约43K行,表中有1.5亿行。经过一点数学运算,您将获得3488秒的时间,或者不到一个小时。确实,查询在大约55分钟内完成。

关于mysql - 如何确定SQL查询何时结束?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27670776/

10-12 12:30
查看更多