首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当锁总数大于10时,如何查看MySQL InnoDB持有的锁数?

当锁总数大于10时,如何查看MySQL InnoDB持有的锁数?
EN

Database Administration用户
提问于 2016-03-26 23:26:30
回答 1查看 31.6K关注 0票数 1

我们遇到了一个问题,我们的ORM锁定的表比我预期的要多。这导致我们的生产系统陷入僵局,我很难诊断。

我可以看到,使用SHOW ENGINE INNODB STATUS或使用无害的工具前10个锁,但我看不到其余的。

下面是来自SHOW ENGINE INNODB STATUS的一个示例输出的头和尾:

代码语言:javascript
复制
--TRANSACTION 1832883, ACTIVE 1728 sec
29 lock struct(s), heap size 3520, 14 row lock(s), undo log entries 10

...

10 LOCKS PRINTED FOR THIS TRX: SUPPRESSING FURTHER PRINTS

我怎样才能查看前十以上的锁?

Perconda有innodb_show_locks_held变量--有替代MySQL的方法吗?如果相关的话,我将在开发中使用MySQL 5.7。

谢谢,艾德

EN

回答 1

Database Administration用户

发布于 2016-03-27 17:56:01

我建议使用MySQL 5.7附带的schema。这将以一种非常容易诊断的方式显示锁等待(比锁更有用):

代码语言:javascript
复制
mysql> SELECT * FROM sys.innodb_lock_waits\G
*************************** 1. row ***************************
                wait_started: 2014-11-11 13:39:20
                    wait_age: 00:00:07
               wait_age_secs: 7
                locked_table: `db1`.`t1`
                locked_index: PRIMARY
                 locked_type: RECORD
              waiting_trx_id: 867158
         waiting_trx_started: 2014-11-11 13:39:15
             waiting_trx_age: 00:00:12
     waiting_trx_rows_locked: 0
   waiting_trx_rows_modified: 0
                 waiting_pid: 3
               waiting_query: UPDATE t1 SET val = val + 1 WHERE id = 2
             waiting_lock_id: 867158:2363:3:3
           waiting_lock_mode: X
             blocking_trx_id: 867157
                blocking_pid: 4
              blocking_query: UPDATE t1 SET val = val + 1 + SLEEP(10) WHERE id = 2
            blocking_lock_id: 867157:2363:3:3
          blocking_lock_mode: X
        blocking_trx_started: 2014-11-11 13:39:11
            blocking_trx_age: 00:00:16
    blocking_trx_rows_locked: 1
  blocking_trx_rows_modified: 1
     sql_kill_blocking_query: KILL QUERY 4
sql_kill_blocking_connection: KILL 4
1 row in set (0.01 sec)
票数 2
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/133464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档