如何在没有全局锁的情况下顺利删除 8 GB 的 InnoDB 表

如何在没有全局锁的情况下顺利删除 8 GB 的 InnoDB 表

MySQL 版本:5.1.63。

我即将删除一个更大的 ~8 GB InnoDB 表。上周,我在另一台机器上删除了一个大四倍的表,全局锁启动,导致我们停机约 90 秒。我怀疑这与table_cache锁。有谁能提供关于如何让这次 DROP 更加顺利的建议吗?首先小批量删除,然后删除TRUNCATE它,最后删除一个DROP TABLE?显然,如果可能的话,我希望将此数据库保留在生产中。我还一直在考虑在删除之前将缓冲池缩小。

我很乐意听取您的意见。

答案1

DROP TABLE总是需要一些全局锁。我会按照你在问题中描述的方式去做:尽可能快地删除行(不要过多地扰乱磁盘 IO 和各种缓存,也要小心复制),然后删除它。

相关内容