更新时间:2023-08-28
因 MySQL 的锁存在于 Server 层以及引擎层,所以单用一个视图可能无法正确查找出对应的锁阻塞关系,在此也建议开启 MDL(metadata lock) 相关的 instrument ,以便发生元数据锁时迅速定位问题。
锁排查三板斧如下:
- 使用 DAS 功能中的“一键诊断”和“锁分析”功能,sys 库中的 innodb_lock_waits 与 DAS 功能类似。大部分 OLTP 场景下,若是 InnoDB 层引发的行级锁,Gap 锁等问题,第一步基本都可以排查出来。
- 若第一步无查询结果,继续查询 performance_schema.table_handles 表,排查是否存在表锁。
- 最后排查元数据锁 performance_schema.metadata_locks 。