一、從檢視檢視
檢視程序
show processlist;
// 檢視是否鎖表
show open tables where in_use > 0;
1、檢視當前的事務
select * from information_schema.innodb_trx;
2、檢視當前鎖定的事務
select * from information_schema.innodb_locks;
3、檢視當前等鎖的事務
select * from information_schema.innodb_lock_waits;
二、使用show檢視
1、查詢是否鎖表
show open tables where in_use > 0;
2、查詢程序(如果您有super許可權,您可以看到所有執行緒。否則,您只能看到您自己的執行緒)
show processlist ;
3、殺死程序id(就是上面命令的id列)
kill 462540518 ;
三、檢視指令碼
1、指令碼一
select
th.processlist_id, -- 這個就是你要的 connection_id, 你可以 kill 這個,達到終止它的操作的目的
th.processlist_command as command, -- 這個為 sleep,則表明操作結束了,但沒有提交事務,也就是事務掛起了
timestampdiff(second, trx.trx_started, now()) as tx_duration, -- 事務已經開啟多長時間了
esc.current_schema, esc.sql_text -- 這個不一定能查到,最後執行的 sql(事務中有多個語句時,這個只是最後乙個,江代表是產生鎖的那個)
from performance_schema.threads th
inner join information_schema.innodb_trx trx
on trx.trx_mysql_thread_id = th.processlist_id
left join performance_schema.events_statements_current esc
on esc.thread_id = th.thread_id;
2、指令碼二
select r.trx_id waiting_trx_id,r.trx_mysql_thread_id waiting_thread,
r.trx_query waiting_query,b.trx_id blocking_trx_id,
b.trx_mysql_thread_id blocking_thread,b.trx_query blocking_query
from information_schema.innodb_lock_waits w
inner join information_schema.innodb_trx b
on b.trx_id = w.blocking_trx_id
inner join information_schema.innodb_trx r
on r.trx_id = w.requesting_trx_id\g
mysql子查詢鎖
session 1 mysql begin query ok,0 rows affected 0.00 sec mysql update a set name select name from bai where a.id bai.id where id 1 query ok,0 rows affe...
mysql會話鎖 Mysql鎖機制 寫鎖
1 準備資料 1.1 建表 1.1.1 建立 employee表 drop table if existsemployee create table if not existsemployee idint primary keyauto increment,namevarchar 40 dept i...
mysql鎖機制 mysql 鎖機制
一 概述 mysql有三種鎖的級別 頁級 表級 行級。myisam和memory儲存引擎採用的是表級鎖 table level locking bdb儲存引擎採用的是頁面鎖 page level locking 但也支援表級鎖 innodb儲存引擎既支援行級鎖 row level locking 也...