MySQL查看锁的sql
MySQL查看锁的sql
查看数据库状态
1 2 | # 会显示加锁的信息等等 show engine innodb status; |
查看正在执行的线程信息
1 | show full processlist; |
查看正在锁的表
1 2 | show open tables where in_use > 0; show open tables; |
查看锁的类型、状态
1 | show status like '%lock%' ; |
5.0后,增加了3个关于锁的表
MySQL5.7版本
INFORMATION_SCHEMA.innodb_trx 当前运行的所有事务
INFORMATION_SCHEMA.innodb_locks 当前出现的锁
INFORMATION_SCHEMA.innodb_lock_waits 锁等待的对应关系
MySQL8.0版本
8.0后,performance_schema.data_locks代替了INFORMATION_SCHEMA.innodb_locks ,performance_schema.data_lock_waits代替了INFORMATION_SCHEMA.innodb_lock_waits
查看正在锁的事务
1 2 | SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS; -- 5.7 SELECT * FROM performance_schema.data_locks; -- 8.0 |
查看等待锁的事务
1 2 | SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS; -- 5.7 SELECT * FROM performance_schema.data_lock_waits; -- 8.0 |
查看行锁情况
1 | show status like 'InnoDB_row_lock%' ; |
查看表锁情况
1 | show status like 'table%' ; |
开启锁监控
开启监控后,可以看到锁的具体信息以及加锁顺序等,更容易分析死锁。
方式一:创建监控表,监控某个数据库
开启:
1 | CREATE TABLE innodb_lock_monitor (a INT) ENGINE=INNODB; |
关闭:
1 | DROP TABLE innodb_lock_monitor; |
注意:在未拥有设置全局属性权限下也可以开启该功能。
方式二,开启全局监控
开启:
1 2 | set GLOBAL innodb_status_output=ON; set GLOBAL innodb_status_output_locks=ON; |
关闭:
1 2 | set GLOBAL innodb_status_output=OFF; set GLOBAL innodb_status_output_locks=OFF; |
查看数据库状态
1 | show engine innodb status \G; |
其他监控
-
标准监控(Standard InnoDB Monitor):监视活动事务持有的表锁、行锁;事务锁等待;线程信号量等待;文件IO请求;buffer pool统计信息;InnoDB主线程purge和change buffer merge活动。
-
123456
# 方式一
CREATE TABLE innodb_monitor (a INT) ENGINE=INNODB;
DROP TABLE innodb_monitor;
# 方式二
set
GLOBAL innodb_status_output=ON;
set
GLOBAL innodb_status_output=OFF;
锁监控(InnoDB Lock Monitor):提供额外的锁信息。
-
12345678
# 方式一
CREATE TABLE innodb_lock_monitor (a INT) ENGINE=INNODB;
DROP TABLE innodb_lock_monitor;
# 方式二
set
GLOBAL innodb_status_output=ON;
set
GLOBAL innodb_status_output_locks=ON;
set
GLOBAL innodb_status_output=OFF;
set
GLOBAL innodb_status_output_locks=OFF;
表空间监控(InnoDB Tablespace Monitor):显示共享表空间中的文件段以及表空间数据结构配置验证。
-
12
CREATE TABLE innodb_tablespace_monitor (a INT) ENGINE=INNODB;
DROP TABLE innodb_tablespace_monitor;
表监控(InnoDB Table Monitor):显示内部数据字典的内容。
-
12
CREATE TABLE innodb_tablespace_monitor (a INT) ENGINE=INNODB;
DROP TABLE innodb_tablespace_monitor;
原文地址:https://blog.csdn.net/blood_Z/article/details/128779095?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EYuanLiJiHua%7EPosition-3-128779095-blog-115273446.235%5Ev27%5Epc_relevant_3mothn_strategy_and_data_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EYuanLiJiHua%7EPosition-3-128779095-blog-115273446.235%5Ev27%5Epc_relevant_3mothn_strategy_and_data_recovery&utm_relevant_index=6
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
2019-03-27 doc转docx以及type对应的类型