mysql查看数据库锁等待排查笔记
实验版本:5.7.27
命令如下:
mysql> use information_schema;
mysql> select count(*) from INNODB_LOCK_WAITS;
+----------+
| count(*) |
+----------+
| 50 |
+----------+
1 row in set, 1 warning (0.00 sec)
SHOW ENGINE INNODB STATUS\G
查看输出得信息进行排查,或者执行以下命令
/usr/bin/mysql -Ne "SHOW ENGINE INNODB STATUS\G" > test.txt
有可能会提示需要root用户名和密码。
下载所有信息test.txt进行分析。可以看到如下信息:
可以得知DETECTED DEADLOCK:
此数据库执行update testtab1 set cr_member_version=cr_member_version+1 where cr_roomid='C430858';update testtab1 set cr_member_version = cr_member_version+1 where cr_roomid in (select ctm_roomid from testtab2 where ctm_ipocid = '1440284405946') and cr_status = 0等操作,数据库出现了锁等待。
需要进一步找开发人员分析业务逻辑,排查锁等待原因。