mysql鎖以及鎖資訊檢視

花花蘑菇發表於2017-03-16
mysql中有以下幾類鎖:
共享鎖/排他鎖
意向鎖,該鎖是表級別的
記錄鎖
Gap 鎖
Next-Key鎖
自增鎖
地理索引的Predicate鎖。


mysql 中有幾張系統表是關於鎖資訊的:
INFORMATION_SCHEMA.INNODB_TRX:記錄了所有在INNODB引擎上執行的事務資訊。
INFORMATION_SCHEMA.INNODB_LOCKS:記錄了每個事務上的鎖的資訊。
INFORMATION_SCHEMA.INNODB_LOCK_WAITS:記錄了哪些事務在等待鎖,以及等待鎖的資訊。

檢視鎖是否存在,以及相關資訊:
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;

需要注意的是,INNODB_TRX、INNODB_LOCKSINNODB_LOCK_WAITS這幾張表的記錄來源是innodb中一塊中間記憶體,在0.1秒內分別查閱這三張表的結果是正常的。
但是如果
超過0.1秒,分開查閱這三張表的話,這三張表的資料會出現不一致的情況。
此外,這幾張表的資料來源和PROCESSLIST這張表的資料來源是不一致的。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28497416/viewspace-2135481/,如需轉載,請註明出處,否則將追究法律責任。

相關文章