【发布时间】:2018-09-16 23:39:02
【问题描述】:
我在生产 mysql db 上运行了分析表命令,却不知道它会阻止我选择表的内容。这导致生产站点宕机:(释放锁需要多长时间?另外,从备份中重新创建数据库会解决问题/摆脱锁吗?
请告诉我。
谢谢。
【问题讨论】:
标签: mysql sql database mysql-5.6 table-locking
我在生产 mysql db 上运行了分析表命令,却不知道它会阻止我选择表的内容。这导致生产站点宕机:(释放锁需要多长时间?另外,从备份中重新创建数据库会解决问题/摆脱锁吗?
请告诉我。
谢谢。
【问题讨论】:
标签: mysql sql database mysql-5.6 table-locking
ANALYZE TABLE 等待获取元数据锁。在等待期间,针对该表的任何 SQL 查询都会等待 ANALYZE TABLE。
ANALYZE TABLE 通常很快,即 1-3 秒。但该快速操作在获取元数据锁之前不会开始。
当您对表进行长时间运行的事务时,它无法获取元数据锁。因此,如果您希望它运行得更快,请完成您的交易。
请参阅我对MySQL failing to ALTER TABLE which is being actively written to 的回复了解更多信息。
【讨论】:
ANALYZE TABLE 很清楚地说“在分析过程中,表被 InnoDB 和 MyISAM 的读锁锁定”。
您可以在 SQL 中通过KILL {connection number} 来停止该命令。
注意:您可能应该更新到 MySQL-5.6 的更新版本。
【讨论】: