RDS for MySQL InnoDB 表级锁等待

RDS for MySQL InnoDB 表级锁等待

 

1. 显式 lock table

2. 隐式 lock table


在 RDS MySQL 实例日常使用中,有些情况下会发现出现 InnoDB 表级锁等待的情况,下面列出常见的2个原因。

 1. 显式 lock table

执行了 lock tables tab_name read; 导致 DML 会话等待在表的表级锁上。

会话 1

lock tables tab_name read;

RDS for MySQL InnoDB 表级锁等待

会话 2

RDS for MySQL InnoDB 表级锁等待

会话 3

RDS for MySQL InnoDB 表级锁等待

 

2. 隐式 lock table

mysqldump 使用默认参数进行数据导出时,会默认的开启 --lock-tables 选项,进而导致导出表上的DML操作等待在表级锁上。

会话 1

RDS for MySQL InnoDB 表级锁等待

会话 2

RDS for MySQL InnoDB 表级锁等待

会话 3

RDS for MySQL InnoDB 表级锁等待

对于 mysqldump 方式的导出,建议在业务低峰期进行导出,并且设置 --single-transaction 选项进行 InnoDB 引擎表导出,避免出现 InnoDB 表级锁等待的情况。

上一篇:RDS for MySQL 表上 Metadata lock 的产生和处理


下一篇:RDS for MySQL 全文检索相关问题的处理