mysql并发调试
常用命令列举
-
主要是 INFORMATION_SCHEMA 库里的表
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31-- 包含事务正在等待的锁的信息
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
-- 包含当前运行的所有事务的列表
SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX;
-- 包含事务持有的当前锁的相关信息以及每个事务等待的锁的信息
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
-- 阻塞的事务列表
SELECT INNODB_LOCKS.* FROM INFORMATION_SCHEMA.INNODB_LOCKS JOIN INFORMATION_SCHEMA.INNODB_LOCK_WAITS ON (
INFORMATION_SCHEMA.INNODB_LOCKS.LOCK_TRX_ID = INFORMATION_SCHEMA.INNODB_LOCK_WAITS.BLOCKING_TRX_ID)
-- 特定表上的锁的列表
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS WHERE LOCK_TABLE = 'db_name.tables_name';
-- 等待锁的事务列表
SELECT TRX_ID, TRX_REQUESTED_LOCK_ID, TRX_MYSQL_THREAD_ID, TRX_QUERY FROM INFORMATION_SCHEMA.INNODB_TRX WHERE TRX_STATE = 'LOCK WAIT';
-- INNODB 监控器
show engine innodb status;
show full processlist ;
kill 600678;
show status like 'innodb_row_lock%'; -- 行锁
show status like '%lock%';
show OPEN TABLES where In_use > 0; -
PERFORMANCE_SCHEMA 中的表(*_INSTANCES)
所有的*_INSTANCES表都包含 NAME和OBJECT_INSTANCE_BEGIN字段,这两个字段分别代表实例的名称和对象检测时的内存地址
-
COND_INSTANCES: 表包含等待条件列表,这些条件是在服务器启动后生成的。条件是指使一个线程等待其他线程的方式方法。
-
FILE_INSTANCES: 表包含性能架构可见的文件列表。当服务器首次打开文件的时候就将文件名插入该表,并且在文件从磁盘删除之前都会保存在该表之中。目前(…)打开文件会有一个正的 OPEN_COUNT计数。Number字段保存当前使用该文件的文件句柄数量。
-
MUTEX_INSTANCES: 表包含性能架构可见的互斥列表。互斥记录中 LOCKED_BY_THREAD_IS 的值为 NOT NULL 部分是当前锁定的互斥。
-
RWLOCK_INSTANCE: 表包含所有读/写锁实例的列表。WRITE_LOCKED_BY_THREAD_IS 字段代表持有锁的线程ID。READ_LOCKED_BYCOUNT字段代表当前在实例上获取了多少读锁。
-
EVENTS_WAITS_*: 系列表包含每个线程等待的事件的信息。
-
*SUMMARY*: 表包含被终止事件的聚合信息。
- 其他命令
1
2
3
4-- 查看变量
show variables like '%xxx%';
-- 查系统变量
select @@xxx;