MariaDB冲表命令只关闭未使用的表

例会话一
选择id、睡眠(60)从t1;
因未执行完,t1表持有元数据锁(MDL)元数据锁

会话二
刷新表。
在MariaDB 10.4版本以前,执行刷新表会把所有的表强制关闭,因会话一持有MDL元数据锁,固冲表会等待等待表元数据锁

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

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

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



MariaDB冲表命令只关闭未使用的表