天天看點

Innodb加鎖資訊檢視

Innodb加鎖分析時,需要檢視目前加鎖情況

使用指令行

show engine innodb status           

複制

開啟NNODB監控機制(InnoDB Monitors)

mysql提供一套INNODB監控機制,用于周期性(每15鈔)輸出INNODB運作相關狀态(INNODB運作狀态、表空間狀态、表狀态等)到mysqld服務标準錯誤輸出。另外,INNODB标準監控和鎖監控,也可以通過指令:show engine innodb status輸出到控制台。

自mysql 5.6.16版本之後,可以通過設定系統參數(innodb_status_output_locks)的方式開啟或者關閉标準監控。

set GLOBAL innodb_status_output=ON;
set GLOBAL innodb_status_output_locks=ON;           

複制

檢視表資訊

  • 開啟performance_schema

    修改performance_schema參數需要重新開機mysql

[mysqld]
performance_schema=ON           

複制

分别檢視事務的鎖資訊,以及鎖等待資訊,mysql8與之前的版本查詢的表不一樣,是在performance_schema庫中,表名也變成了

data_locks

data_lock_waits

// mysql 5.x
// innodb_locks記錄了所有innodb正在等待的鎖,和被等待的鎖
select * from information_schema.innodb_locks;
// innodb_lock_waits記錄了所有innodb鎖的持有和等待關系
select * from information_schema.innodb_lock_waits'

// mysql8: 鎖資訊
select * from performance_schema.data_locks;
// mysql8: 鎖等待資訊
select * from performance_schema.data_lock_waits;
// mysql8: MDL鎖資訊
select * from performance_schema.metadata_locks;           

複制

  • 檢視目前事務ID
SELECT tx.trx_id FROM information_schema.innodb_trx tx WHERE tx.trx_mysql_thread_id = connection_id()           

複制

參考

  • Innodb加鎖規則