MySQL waiting for metadata lock的分析

处理waiting for metadata lock,需要:

  • 1. 平时打开performance_schema(以下简称PS)的instruments。
  • 2. 查询PS.metadata_locks ,找到状态为PENDING的thread。
  • 3. 查询PS.threads,关联PS.metadata_locks中的thread_id, 找到PROCESSLIST_ID,PROCESSLIST_ID即为show processlist中的metadata lock的holder。

  • 注意,默认情况下,instruments是没有打开的:

    如下的方式可以打开instruments:

    我们来测试一下,如何利用PS的instruments找到metadata lock的holder:

    session 1:

    session 3:

    session 2: (此时,在查innodb_lock_waits等表是看不到信息的,因为innodb_lock_waits是行锁,而metadata lock是表锁。)

    session 2:(需要从PS.metadata_locks 进行查询)

    session 3:

    相关文章

    发表评论

    电子邮件地址不会被公开。 必填项已用*标注

    此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据