mysql鎖以及鎖資訊檢視
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_LOCKS和INNODB_LOCK_WAITS這幾張表的記錄來源是innodb中一塊中間記憶體,在0.1秒內分別查閱這三張表的結果是正常的。
但是如果超過0.1秒,分開查閱這三張表的話,這三張表的資料會出現不一致的情況。
此外,這幾張表的資料來源和PROCESSLIST這張表的資料來源是不一致的。
共享鎖/排他鎖
意向鎖,該鎖是表級別的
記錄鎖
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_LOCKS和INNODB_LOCK_WAITS這幾張表的記錄來源是innodb中一塊中間記憶體,在0.1秒內分別查閱這三張表的結果是正常的。
但是如果超過0.1秒,分開查閱這三張表的話,這三張表的資料會出現不一致的情況。
此外,這幾張表的資料來源和PROCESSLIST這張表的資料來源是不一致的。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28497416/viewspace-2135481/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 檢視MySQL鎖定情況MySql
- 檢視oracle鎖相關資訊Oracle
- 檢視MySQL鎖等待的原因MySql
- MySQL全域性鎖、表鎖以及行鎖MySql
- oracle 檢視鎖表和解鎖Oracle
- 透過shell指令碼檢視鎖資訊指令碼
- 檢視鎖定的session資訊指令碼Session指令碼
- 通過shell指令碼檢視鎖資訊指令碼
- mysql行鎖和死鎖檢測MySql
- mysql InnoDB鎖等待的檢視及分析MySql
- Oracle死鎖的檢視以及解決辦法Oracle
- oracle檢視被鎖的表和解鎖Oracle
- 檢視Oracle鎖並且釋放鎖Oracle
- sqlserver鎖表、解鎖、檢視銷表SQLServer
- 【MySQL】鎖——檢視當前資料庫鎖請求的三種方法MySql資料庫
- Oracle檢視被鎖物件及解鎖方法Oracle物件
- oracle檢視鎖表程式Oracle
- MySQL 的共享鎖和排它鎖以及自動提交MySql
- 檢視oracle被鎖的表是誰鎖的Oracle
- 檢視oracle死鎖程式並結束死鎖Oracle
- MySQL 行級鎖的使用以及死鎖的預防MySql
- mysql鎖分析相關的幾個系統檢視MySql
- mysql鎖之死鎖MySql
- 檢視ORACLE中鎖定物件Oracle物件
- oracle 檢視死鎖語句Oracle
- Mysql事務以及加鎖機制MySql
- 檢視鎖的資訊和alter system kill session的用法(小例子)Session
- 資料庫篇:mysql事務原理之MVCC檢視+鎖資料庫MySqlMVC
- 檢視MySql資料庫鎖,並殺死對應程式MySql資料庫
- 【鎖】MySQL間隙鎖MySql
- MySQL鎖(樂觀鎖、悲觀鎖、多粒度鎖)MySql
- 剖析6個MySQL死鎖案例的原因以及死鎖預防策略MySql
- DB2 鎖表情況檢視DB2
- MySQL 死鎖和鎖等待MySql
- MySQL鎖MySql
- mysql 鎖MySql
- [Mysql]鎖MySql
- Mysql鎖之行級鎖和表級意向鎖MySql