千家信息网

MariaDB FLUSH TABLES命令只关闭未使用的表

发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,例会话一select id,sleep(60) from t1;因未执行完,t1表持有METADATA LOCK(MDL)元数据锁会话二FLUSH TABLES;在MariaDB 10.4 版本以前,
千家信息网最后更新 2025年01月23日MariaDB FLUSH TABLES命令只关闭未使用的表

例会话一
select id,sleep(60) from t1;
因未执行完,t1表持有METADATA LOCK(MDL)元数据锁

会话二
FLUSH TABLES;
在MariaDB 10.4 版本以前,执行FLUSH TABLES会把所有的表强制关闭,因会话一持有MDL元数据锁,固FLUSH TABLES会等待Waiting for table metadata lock

在MariaDB 10.4 GA版本,将只关闭未使用的表,正在使用中的表忽略不受影响。(除非你手工指定表,如FLUSH TABLES t1,将会强制关闭t1表)

场景:MHA在线切换调用master_ip_online_change脚本时,第一步会执行FLUSH NO_WRITE_TO_BINLOG TABLES关闭所有表,此时如果你的数据库有未执行完的慢SQL,FLUSH NO_WRITE_TO_BINLOG TABLES就会卡住,导致无法切换。

注:MySQL 8.0.17版本不支持该功能



0