查看innodb引擎一个月内的所有死锁日志 包括冲突的sql
可以通过以下步骤查看InnoDB引擎一个月内的所有死锁日志,包括冲突的SQL:
- 打开MySQL的配置文件 my.cnf 或 my.ini,找到以下行并取消注释:
#general_log_file = /var/log/mysql/mysql.log
#general_log = 1
将这两行的注释去掉,保存文件并重新启动MySQL服务。
- 打开MySQL客户端,执行以下命令开启general log:
SET GLOBAL general_log = 'ON';
- 执行以下命令查看一个月内的所有死锁日志:
SELECT * FROM mysql.general_log WHERE command_type = 'query' AND argument LIKE '%Deadlock found%' AND event_time >= DATE_SUB(NOW(), INTERVAL 1 MONTH);
这条命令会查找所有包含“Deadlock found”关键字的SQL语句,并且时间在一个月内的记录。
- 如果需要查看具体的冲突SQL语句,可以在上一条命令的基础上加上以下条件:
SELECT * FROM mysql.general_log WHERE command_type = 'query' AND argument LIKE '%Deadlock found%' AND argument LIKE '%SELECT%' AND event_time >= DATE_SUB(NOW(), INTERVAL 1 MONTH);
这条命令会查找所有包含“Deadlock found”和“SELECT”关键字的SQL语句,并且时间在一个月内的记录。
注意:开启general log会记录所有MySQL的操作,包括查询、插入、更新、删除等,可能会占用大量磁盘空间和影响MySQL的性能。完成上述操作后,应该及时关闭general log并删除不需要的日志文件
原文地址: https://www.cveoy.top/t/topic/fjsI 著作权归作者所有。请勿转载和采集!