1. 查看全局讀鎖,表鎖,MDL鎖
1)說明
以下說明的方式適用於Mysql 5.7 及以上版本。對於5.7之前版本,沒有具體的方法查看全局讀鎖,表鎖,MDL鎖信息。可以通過 information_schema.processlist,performance_schema.events_statements_history, performance_schema.events_statements_current 等表大概推測阻塞情況。
5.7及以上版本
2)使用如下方法的前提條件
##在5.7版本之前沒有專門記錄全局讀鎖信息的表,在5.7中新增performance_schema.metadata_locks視圖可以查詢全局讀鎖
update performance_schema.setup_instruments set ENABLED='YES',TIMED='YES' where name like 'statement%';
##該生產者默認已啓用
update performance_schema.setup_instruments set ENABLED='YES',TIMED='YES' where name='wait/lock/metadata/sql/mdl';
##該生產者默認未啓用
update performance_schema.setup_consumers set ENABLED='YES' where name='events_statements_current' or name='events_statements_history';
##該消費者默認啓用
update performance_schema.setup_consumers set ENABLED='YES' where name='global_instrumentation';
##該消費者默認已啓用
3)查詢全局讀鎖,表鎖,MDL鎖信息阻塞信息
NOTE1:各種備份工具爲了得到一致性備份通常使用 flush table with read lock;來獲得全局讀鎖。
查詢方式1:(會列出所有的mdl,全局讀鎖,表鎖等信息,但是無法直觀判斷出阻塞者與被阻塞者)
set group_concat_max_len=20480;
select
t.PROCESSLIST_ID,
t.PROCESSLIST_USER,
t.PROCESSLIST_HOST,
t.PROCESSLIST_STATE,
t.PROCESSLIST_INFO,
i.trx_started,
i.trx_state,
i.trx_query,
(select group_concat(tem_b.sql_text order by EVENT_ID SEPARATOR ';\n') from (select thread_id,sql_text,EVENT_ID from performance_schema.events_statements_history his union select thread_id,sql_text,EVENT_ID from performance_schema.events_statements_current cur) tem_b where tem_b.thread_id=t.thread_id) trx_statements,
m.OBJECT_TYPE,
m.OBJECT_SCHEMA,
m.OBJECT_NAME,
m.OBJECT_INSTANCE_BEGIN,
m.LOCK_TYPE,
m.LOCK_DURATION,
m.LOCK_STATUS,
m.SOURCE,
m.OWNER_THREAD_ID,
m.OWNER_EVENT_ID
from
performance_schema.metadata_locks m
join `performance_schema`.`threads` t on t.THREAD_ID=m.OWNER_THREAD_ID and m.OWNER_THREAD_ID!=sys.ps_thread_id(connection_id())
left join `information_schema`.`innodb_trx` i on t.PROCESSLIST_ID=i.trx_mysql_thread_id
order by m.OBJECT_INSTANCE_BEGIN,m.OWNER_THREAD_ID\G;
##如上語句會顯示所有的MDL鎖信息
查詢方式2:(可以直觀的列出阻塞者和被阻塞者及是否存在事務,但是無法列出阻塞者及被阻塞者目前持有的所有 mdl鎖信息)
SELECT
`g`.`OBJECT_SCHEMA` AS `object_schema`,
`g`.`OBJECT_NAME` AS `object_name`,
`pt`.`THREAD_ID` AS `waiting_thread_id`,
`pt`.`PROCESSLIST_ID` AS `waiting_pid`,
`sys`.`ps_thread_account` (`p`.`OWNER_THREAD_ID`) AS `waiting_account`,
`pi`.`trx_started` AS `waiting_trx_started`,
`pi`.`trx_state` AS `waiting_trx_state`,
`p`.`LOCK_TYPE` AS `waiting_lock_type`,
`p`.`LOCK_DURATION` AS `waiting_lock_duration`,
`pt`.`PROCESSLIST_STATE` AS `waiting_state`,
`pt`.`PROCESSLIST_TIME` AS `waiting_query_secs`,
`ps`.`ROWS_AFFECTED` AS `waiting_query_rows_affected`,
`ps`.`ROWS_EXAMINED` AS `waiting_query_rows_examined`,
`sys`.`format_statement` (`pt`.`PROCESSLIST_INFO`) AS `waiting_query`,
(select group_concat(tem_b.sql_text order by EVENT_ID SEPARATOR ';\n') from (select thread_id,sql_text,EVENT_ID from performance_schema.events_statements_history his union select thread_id,sql_text,EVENT_ID from performance_schema.events_statements_current cur) tem_b where tem_b.thread_id=ps.THREAD_ID) waiting_trx_statements,
`gt`.`THREAD_ID` AS `blocking_thread_id`,
`gt`.`PROCESSLIST_ID` AS `blocking_pid`,
`sys`.`ps_thread_account` (`g`.`OWNER_THREAD_ID`) AS `blocking_account`,
`gi`.`trx_started` AS `blocking_trx_started`,
`gi`.`trx_state` AS `blocking_trx_state`,
`g`.`LOCK_TYPE` AS `blocking_lock_type`,
`gt`.`PROCESSLIST_STATE` AS `blocking_state`,
`g`.`LOCK_DURATION` AS `blocking_lock_duration`,
(select group_concat(tem_b.sql_text order by EVENT_ID SEPARATOR ';\n') from (select thread_id,sql_text,EVENT_ID from performance_schema.events_statements_history his union select thread_id,sql_text,EVENT_ID from performance_schema.events_statements_current cur) tem_b where tem_b.thread_id=gs.THREAD_ID) blocking_trx_statements,
concat('KILL QUERY ',`gt`.`PROCESSLIST_ID`) AS `sql_kill_blocking_query`,
concat('KILL ',`gt`.`PROCESSLIST_ID`) AS `sql_kill_blocking_connection`
FROM
`performance_schema`.`metadata_locks` `g`
JOIN `performance_schema`.`metadata_locks` `p` ON `g`.`OBJECT_TYPE` = `p`.`OBJECT_TYPE`
AND `g`.`OBJECT_SCHEMA` = `p`.`OBJECT_SCHEMA`
AND `g`.`OBJECT_NAME` = `p`.`OBJECT_NAME`
AND `g`.`OWNER_THREAD_ID` != `p`.`OWNER_THREAD_ID`
AND `g`.`LOCK_STATUS` = 'GRANTED'
AND `p`.`LOCK_STATUS` = 'PENDING'
JOIN `performance_schema`.`threads` `gt` ON `g`.`OWNER_THREAD_ID` = `gt`.`THREAD_ID`
JOIN `performance_schema`.`threads` `pt` ON `p`.`OWNER_THREAD_ID` = `pt`.`THREAD_ID`
LEFT JOIN `performance_schema`.`events_statements_current` `gs` ON `g`.`OWNER_THREAD_ID` = `gs`.`THREAD_ID`
LEFT JOIN `performance_schema`.`events_statements_current` `ps` ON `p`.`OWNER_THREAD_ID` = `ps`.`THREAD_ID`
LEFT JOIN `information_schema`.`innodb_trx` `gi` ON `gi`.`trx_mysql_thread_id` = `gt`.`PROCESSLIST_ID`
LEFT JOIN `information_schema`.`innodb_trx` `pi` ON `pi`.`trx_mysql_thread_id` = `pt`.`PROCESSLIST_ID`
WHERE
`g`.`OBJECT_TYPE` = 'TABLE'\G;
NOTE1:sys.schema_table_lock_waits 視圖可以用來查mdl,但是有一些不足 1)沒有`g`.`OWNER_THREAD_ID` != `p`.`OWNER_THREAD_ID`會查出自己阻塞自己的情況;2)沒有關聯`information_schema`.`innodb_trx`事務表,不知道事務情況;3)沒有輸出線程最近執行的10條語句
4)全局讀鎖阻塞示例
結果如下(會話1執行flush table with read lock,會話2執行update test_lock set name='name_8_before' where id=8被阻塞 ):
*************************** 1. row ***************************
PROCESSLIST_ID: 1012898 --會話的 processlist_id(information_schema.processlist.id)
PROCESSLIST_USER: root --會話用戶
PROCESSLIST_HOST: 127.0.0.1 --會話ip
PROCESSLIST_STATE: NULL
PROCESSLIST_INFO: NULL
trx_started: NULL
trx_state: NULL
trx_query: NULL
trx_statements: show processlist; --當前線程最近執行的10條sql(最後一條是獲取全局讀鎖語句)
show processlist;
show processlist;
show processlist;
show processlist;
show processlist;
show processlist;
show processlist;
select connection_id();
flush table with read lock
OBJECT_TYPE: GLOBAL
OBJECT_SCHEMA: NULL
OBJECT_NAME: NULL
OBJECT_INSTANCE_BEGIN: 140243634271056
LOCK_TYPE: SHARED
LOCK_DURATION: EXPLICIT
LOCK_STATUS: GRANTED
SOURCE: lock.cc:1110
OWNER_THREAD_ID: 1012931 --線程id(performance_schema.threads.THREAD_ID)
OWNER_EVENT_ID: 24
*************************** 2. row ***************************
PROCESSLIST_ID: 1012898
PROCESSLIST_USER: root
PROCESSLIST_HOST: 127.0.0.1
PROCESSLIST_STATE: NULL
PROCESSLIST_INFO: NULL
trx_started: NULL
trx_state: NULL
trx_query: NULL
trx_statements: show processlist;
show processlist;
show processlist;
show processlist;
show processlist;
show processlist;
show processlist;
show processlist;
select connection_id();
flush table with read lock
OBJECT_TYPE: COMMIT
OBJECT_SCHEMA: NULL
OBJECT_NAME: NULL
OBJECT_INSTANCE_BEGIN: 140243634291712
LOCK_TYPE: SHARED
LOCK_DURATION: EXPLICIT
LOCK_STATUS: GRANTED
SOURCE: lock.cc:1194
OWNER_THREAD_ID: 1012931
OWNER_EVENT_ID: 24
*************************** 3. row ***************************
PROCESSLIST_ID: 1012887 --會話的 processlist_id(information_schema.processlist.id)
PROCESSLIST_USER: root --會話用戶
PROCESSLIST_HOST: 127.0.0.1 --會話用戶
PROCESSLIST_STATE: Waiting for global read lock --會話當前所處狀態(等待全局讀鎖)
PROCESSLIST_INFO: update test_lock set name='name_8_before' where id=8 --會話當前執行的sql
trx_started: NULL
trx_state: NULL
trx_query: NULL
trx_statements: truncate table performance_schema.events_statements_history;
update test_lock set name='name_8_before' where id=8
OBJECT_TYPE: GLOBAL
OBJECT_SCHEMA: NULL
OBJECT_NAME: NULL
OBJECT_INSTANCE_BEGIN: 140243701507712
LOCK_TYPE: INTENTION_EXCLUSIVE
LOCK_DURATION: STATEMENT
LOCK_STATUS: PENDING
SOURCE: sql_base.cc:3190
OWNER_THREAD_ID: 1012920
OWNER_EVENT_ID: 66
3 rows in set (0.04 sec)
ERROR:
No query specified
5)MDL 鎖阻塞示例
會話1對大表t進行全表更新(一直在進行中),會話2對大表進行ddl操作
*************************** 1. row ***************************
OBJECT_TYPE: TABLE
OBJECT_SCHEMA: test_shao
OBJECT_NAME: t
OBJECT_INSTANCE_BEGIN: 119085328
LOCK_TYPE: SHARED_WRITE
LOCK_DURATION: TRANSACTION
LOCK_STATUS: GRANTED
SOURCE: sql_parse.cc:6020
OWNER_THREAD_ID: 1012919
OWNER_EVENT_ID: 34
trx_started: 2020-03-24 11:20:56
trx_state: RUNNING
trx_query: update t set name_3='xxxx_3'
PROCESSLIST_ID: 1012886
PROCESSLIST_USER: root
PROCESSLIST_HOST: 127.0.0.1
PROCESSLIST_STATE: updating
PROCESSLIST_INFO: update t set name_3='xxxx_3'
trx_statements: update t set name_3='xxxx_3'
*************************** 2. row ***************************
OBJECT_TYPE: GLOBAL
OBJECT_SCHEMA: NULL
OBJECT_NAME: NULL
OBJECT_INSTANCE_BEGIN: 119851536
LOCK_TYPE: INTENTION_EXCLUSIVE
LOCK_DURATION: STATEMENT
LOCK_STATUS: GRANTED
SOURCE: sql_base.cc:3190
OWNER_THREAD_ID: 1012919
OWNER_EVENT_ID: 34
trx_started: 2020-03-24 11:20:56
trx_state: RUNNING
trx_query: update t set name_3='xxxx_3'
PROCESSLIST_ID: 1012886
PROCESSLIST_USER: root
PROCESSLIST_HOST: 127.0.0.1
PROCESSLIST_STATE: updating
PROCESSLIST_INFO: update t set name_3='xxxx_3'
trx_statements: update t set name_3='xxxx_3'
*************************** 3. row ***************************
OBJECT_TYPE: GLOBAL
OBJECT_SCHEMA: NULL
OBJECT_NAME: NULL
OBJECT_INSTANCE_BEGIN: 140243701380176
LOCK_TYPE: INTENTION_EXCLUSIVE
LOCK_DURATION: STATEMENT
LOCK_STATUS: GRANTED
SOURCE: sql_base.cc:5533
OWNER_THREAD_ID: 1012920
OWNER_EVENT_ID: 59
trx_started: NULL
trx_state: NULL
trx_query: NULL
PROCESSLIST_ID: 1012887
PROCESSLIST_USER: root
PROCESSLIST_HOST: 127.0.0.1
PROCESSLIST_STATE: Waiting for table metadata lock
PROCESSLIST_INFO: alter table t add column name_4 varchar(20)
trx_statements: truncate table performance_schema.events_statements_history;
alter table t add column name_4 varchar(20)
*************************** 4. row ***************************
OBJECT_TYPE: TABLE
OBJECT_SCHEMA: test_shao
OBJECT_NAME: t
OBJECT_INSTANCE_BEGIN: 140243701506688
LOCK_TYPE: EXCLUSIVE
LOCK_DURATION: TRANSACTION
LOCK_STATUS: PENDING
SOURCE: mdl.cc:3919
OWNER_THREAD_ID: 1012920
OWNER_EVENT_ID: 59
trx_started: NULL
trx_state: NULL
trx_query: NULL
PROCESSLIST_ID: 1012887
PROCESSLIST_USER: root
PROCESSLIST_HOST: 127.0.0.1
PROCESSLIST_STATE: Waiting for table metadata lock
PROCESSLIST_INFO: alter table t add column name_4 varchar(20)
trx_statements: truncate table performance_schema.events_statements_history;
alter table t add column name_4 varchar(20)
*************************** 5. row ***************************
OBJECT_TYPE: SCHEMA
OBJECT_SCHEMA: test_shao
OBJECT_NAME: NULL
OBJECT_INSTANCE_BEGIN: 140243701507712
LOCK_TYPE: INTENTION_EXCLUSIVE
LOCK_DURATION: TRANSACTION
LOCK_STATUS: GRANTED
SOURCE: sql_base.cc:5518
OWNER_THREAD_ID: 1012920
OWNER_EVENT_ID: 59
trx_started: NULL
trx_state: NULL
trx_query: NULL
PROCESSLIST_ID: 1012887
PROCESSLIST_USER: root
PROCESSLIST_HOST: 127.0.0.1
PROCESSLIST_STATE: Waiting for table metadata lock
PROCESSLIST_INFO: alter table t add column name_4 varchar(20)
trx_statements: truncate table performance_schema.events_statements_history;
alter table t add column name_4 varchar(20)
*************************** 6. row ***************************
OBJECT_TYPE: TABLE
OBJECT_SCHEMA: test_shao
OBJECT_NAME: t
OBJECT_INSTANCE_BEGIN: 140243701509408
LOCK_TYPE: SHARED_UPGRADABLE
LOCK_DURATION: TRANSACTION
LOCK_STATUS: GRANTED
SOURCE: sql_parse.cc:6020
OWNER_THREAD_ID: 1012920
OWNER_EVENT_ID: 59
trx_started: NULL
trx_state: NULL
trx_query: NULL
PROCESSLIST_ID: 1012887
PROCESSLIST_USER: root
PROCESSLIST_HOST: 127.0.0.1
PROCESSLIST_STATE: Waiting for table metadata lock
PROCESSLIST_INFO: alter table t add column name_4 varchar(20)
trx_statements: truncate table performance_schema.events_statements_history;
alter table t add column name_4 varchar(20)
6 rows in set (0.01 sec)
ERROR:
No query specified
6) 表鎖阻塞示例
##會話1執行lock table test_lock read,會話2執行update test_lock set name='xxx_name' where id=1 被阻塞
*************************** 1. row ***************************
PROCESSLIST_ID: 1013225
PROCESSLIST_USER: root
PROCESSLIST_HOST: 127.0.0.1
PROCESSLIST_STATE: NULL
PROCESSLIST_INFO: NULL
trx_started: NULL
trx_state: NULL
trx_query: NULL
trx_statements: truncate table performance_schema.events_statements_history;
lock table test_lock read
OBJECT_TYPE: TABLE
OBJECT_SCHEMA: test_shao
OBJECT_NAME: test_lock
OBJECT_INSTANCE_BEGIN: 140243500062176
LOCK_TYPE: SHARED_READ_ONLY
LOCK_DURATION: TRANSACTION
LOCK_STATUS: GRANTED
SOURCE: sql_parse.cc:6020
OWNER_THREAD_ID: 1013258
OWNER_EVENT_ID: 10
*************************** 2. row ***************************
PROCESSLIST_ID: 1013224
PROCESSLIST_USER: root
PROCESSLIST_HOST: 127.0.0.1
PROCESSLIST_STATE: Waiting for table metadata lock
PROCESSLIST_INFO: update test_lock set name='xxx_name' where id=1
trx_started: NULL
trx_state: NULL
trx_query: NULL
trx_statements: select connection_id();
update test_lock set name='xxx_name' where id=1
OBJECT_TYPE: TABLE
OBJECT_SCHEMA: test_shao
OBJECT_NAME: test_lock
OBJECT_INSTANCE_BEGIN: 140243768501248
LOCK_TYPE: SHARED_WRITE
LOCK_DURATION: TRANSACTION
LOCK_STATUS: PENDING
SOURCE: sql_parse.cc:6020
OWNER_THREAD_ID: 1013257
OWNER_EVENT_ID: 5
*************************** 3. row ***************************
PROCESSLIST_ID: 1013224
PROCESSLIST_USER: root
PROCESSLIST_HOST: 127.0.0.1
PROCESSLIST_STATE: Waiting for table metadata lock
PROCESSLIST_INFO: update test_lock set name='xxx_name' where id=1
trx_started: NULL
trx_state: NULL
trx_query: NULL
trx_statements: select connection_id();
update test_lock set name='xxx_name' where id=1
OBJECT_TYPE: GLOBAL
OBJECT_SCHEMA: NULL
OBJECT_NAME: NULL
OBJECT_INSTANCE_BEGIN: 140243768882480
LOCK_TYPE: INTENTION_EXCLUSIVE
LOCK_DURATION: STATEMENT
LOCK_STATUS: GRANTED
SOURCE: sql_base.cc:3190
OWNER_THREAD_ID: 1013257
OWNER_EVENT_ID: 5
3 rows in set (0.01 sec)
ERROR:
No query specified
7)級聯阻塞查詢示例(使用查詢方式2)
#session 1 執行 count(distinct id),session 2 添加字段 name_5,session 3 添加字段 name_6,session 4 count(*)查詢
*************************** 1. row ***************************
object_schema: test_shao
object_name: t
waiting_thread_id: 1066526
waiting_pid: 1066493
waiting_account: [email protected]
waiting_lock_type: SHARED_UPGRADABLE
waiting_lock_duration: TRANSACTION
waiting_query_secs: 3
waiting_query_rows_affected: 0
waiting_query_rows_examined: 0
waiting_query: alter table t add column name_6 varchar(20)
waiting_trx_statements: select USER();
SELECT DATABASE();
show tables;
desc t;
alter table t add column name_5 varchar(20);
select connection_id();
alter table t add column name_5 varchar(20);
alter table t add column name_5 varchar(20);
alter table t add column name_5 varchar(20);
alter table t add column name_6 varchar(20)
blocking_thread_id: 1066522
blocking_pid: 1066489
blocking_account: [email protected]
blocking_lock_type: SHARED_READ
blocking_lock_duration: TRANSACTION
blocking_trx_statements: selelct connection_id();
select connection_id();
select count(*) from t;
select connection_id();
select sys.ps_thread_id(connection_id());
select sys.ps_thread_id(connection_id());
select count(*) from t;
select count(*) from t;
select count(distinct id) from t
sql_kill_blocking_query: KILL QUERY 1066489
sql_kill_blocking_connection: KILL 1066489
*************************** 2. row ***************************
object_schema: test_shao
object_name: t
waiting_thread_id: 1066526
waiting_pid: 1066493
waiting_account: [email protected]
waiting_lock_type: SHARED_UPGRADABLE
waiting_lock_duration: TRANSACTION
waiting_query_secs: 3
waiting_query_rows_affected: 0
waiting_query_rows_examined: 0
waiting_query: alter table t add column name_6 varchar(20)
waiting_trx_statements: select USER();
SELECT DATABASE();
show tables;
desc t;
alter table t add column name_5 varchar(20);
select connection_id();
alter table t add column name_5 varchar(20);
alter table t add column name_5 varchar(20);
alter table t add column name_5 varchar(20);
alter table t add column name_6 varchar(20)
blocking_thread_id: 1066851
blocking_pid: 1066818
blocking_account: [email protected]
blocking_lock_type: SHARED_UPGRADABLE
blocking_lock_duration: TRANSACTION
blocking_trx_statements: select @@version_comment limit 1;
select USER();
SELECT DATABASE();
alter table t add column name_6 varchar(20);
alter table t add column name_5 varchar(20)
sql_kill_blocking_query: KILL QUERY 1066818
sql_kill_blocking_connection: KILL 1066818
*************************** 3. row ***************************
object_schema: test_shao
object_name: t
waiting_thread_id: 1066851
waiting_pid: 1066818
waiting_account: [email protected]
waiting_lock_type: EXCLUSIVE
waiting_lock_duration: TRANSACTION
waiting_query_secs: 3
waiting_query_rows_affected: 0
waiting_query_rows_examined: 0
waiting_query: alter table t add column name_5 varchar(20)
waiting_trx_statements: select @@version_comment limit 1;
select USER();
SELECT DATABASE();
alter table t add column name_6 varchar(20);
alter table t add column name_5 varchar(20)
blocking_thread_id: 1066522
blocking_pid: 1066489
blocking_account: [email protected]
blocking_lock_type: SHARED_READ
blocking_lock_duration: TRANSACTION
blocking_trx_statements: selelct connection_id();
select connection_id();
select count(*) from t;
select connection_id();
select sys.ps_thread_id(connection_id());
select sys.ps_thread_id(connection_id());
select count(*) from t;
select count(*) from t;
select count(distinct id) from t
sql_kill_blocking_query: KILL QUERY 1066489
sql_kill_blocking_connection: KILL 1066489
*************************** 4. row ***************************
object_schema: test_shao
object_name: t
waiting_thread_id: 1066852
waiting_pid: 1066819
waiting_account: [email protected]
waiting_lock_type: SHARED_READ
waiting_lock_duration: TRANSACTION
waiting_query_secs: 2
waiting_query_rows_affected: 0
waiting_query_rows_examined: 0
waiting_query: select count(*) from t
waiting_trx_statements: select @@version_comment limit 1;
select USER();
SELECT DATABASE();
select count(*) from t;
desc t;
select count(*) from t
blocking_thread_id: 1066522
blocking_pid: 1066489
blocking_account: [email protected]
blocking_lock_type: SHARED_READ
blocking_lock_duration: TRANSACTION
blocking_trx_statements: selelct connection_id();
select connection_id();
select count(*) from t;
select connection_id();
select sys.ps_thread_id(connection_id());
select sys.ps_thread_id(connection_id());
select count(*) from t;
select count(*) from t;
select count(distinct id) from t
sql_kill_blocking_query: KILL QUERY 1066489
sql_kill_blocking_connection: KILL 1066489
*************************** 5. row ***************************
object_schema: test_shao
object_name: t
waiting_thread_id: 1066852
waiting_pid: 1066819
waiting_account: [email protected]
waiting_lock_type: SHARED_READ
waiting_lock_duration: TRANSACTION
waiting_query_secs: 2
waiting_query_rows_affected: 0
waiting_query_rows_examined: 0
waiting_query: select count(*) from t
waiting_trx_statements: select @@version_comment limit 1;
select USER();
SELECT DATABASE();
select count(*) from t;
desc t;
select count(*) from t
blocking_thread_id: 1066851
blocking_pid: 1066818
blocking_account: [email protected]
blocking_lock_type: SHARED_UPGRADABLE
blocking_lock_duration: TRANSACTION
blocking_trx_statements: select @@version_comment limit 1;
select USER();
SELECT DATABASE();
alter table t add column name_6 varchar(20);
alter table t add column name_5 varchar(20)
sql_kill_blocking_query: KILL QUERY 1066818
sql_kill_blocking_connection: KILL 1066818
5 rows in set (0.00 sec)
NOTE:在出現級聯阻塞的時候,我們要注意找到阻塞的源頭(blocking_pid 出現頻率最高的會話)