在生产服务器上,我需要一些时间来删除几十万行。 该查询是优化的,但一次删除将导致服务器冻结,所以我做它手动块删除例如5000行每次。 允许服务器清除挂起的查询,并使表locking对最终用户不太明显。 我使用MyISAM引擎。
是不是有一个工具/命令/方法,以低优先级或大块做这样的长时间的查询,或者在没有得到服务器卡住的情况下,如果它需要很长的时间才能完成的确定的方式卡住了?
最佳做法是什么?
您可以尝试将LOW_PRIORITY关键字添加到您的DELETE查询中,并查看它是如何工作的。 例如DELETE LOW_PRIORITY FROM tablenamegoeshere ...
查看https://dev.mysql.com/doc/refman/5.5/en/delete.html了解更多详情。