data_lock_waits
表格實作多對多的關係,顯示 data_locks
表格中哪些資料鎖定請求被 data_locks
表格中哪些已持有的資料鎖定封鎖。data_locks
中已持有的鎖定只有在封鎖某些鎖定請求時才會出現在 data_lock_waits
中。
此資訊可讓您瞭解工作階段之間的資料鎖定相依性。此表格不僅會顯示工作階段或交易正在等候哪個鎖定,還會顯示目前持有該鎖定的工作階段或交易。
資料鎖定等候資訊範例
mysql> SELECT * FROM performance_schema.data_lock_waits\G
*************************** 1. row ***************************
ENGINE: INNODB
REQUESTING_ENGINE_LOCK_ID: 140211201964816:2:4:2:140211086465800
REQUESTING_ENGINE_TRANSACTION_ID: 1555
REQUESTING_THREAD_ID: 47
REQUESTING_EVENT_ID: 5
REQUESTING_OBJECT_INSTANCE_BEGIN: 140211086465800
BLOCKING_ENGINE_LOCK_ID: 140211201963888:2:4:2:140211086459880
BLOCKING_ENGINE_TRANSACTION_ID: 1554
BLOCKING_THREAD_ID: 46
BLOCKING_EVENT_ID: 12
BLOCKING_OBJECT_INSTANCE_BEGIN: 140211086459880
與大多數 Performance Schema 資料收集不同,沒有任何工具可控制是否收集資料鎖定資訊,也沒有任何系統變數可控制資料鎖定表格大小。Performance Schema 會收集伺服器中已有的資訊,因此產生此資訊不需要任何記憶體或 CPU 額外負荷,也不需要控制其收集的參數。
使用 data_lock_waits
表格可協助診斷在同時高負載期間發生的效能問題。對於 InnoDB
,請參閱第 17.15.2 節「InnoDB INFORMATION_SCHEMA 交易和鎖定資訊」中的相關討論。
由於 data_lock_waits
表格中的欄位與 data_locks
表格中的欄位類似,因此此處的欄位描述已縮短。如需更詳細的欄位描述,請參閱第 29.12.13.1 節「data_locks 表格」。
data_lock_waits
表格具有下列欄位
ENGINE
要求鎖定的儲存引擎。
REQUESTING_ENGINE_LOCK_ID
儲存引擎所要求鎖定的 ID。若要取得鎖定的詳細資料,請將此欄位與
data_locks
表格的ENGINE_LOCK_ID
欄位聯結。REQUESTING_ENGINE_TRANSACTION_ID
要求鎖定的交易的儲存引擎內部 ID。
REQUESTING_THREAD_ID
要求鎖定的工作階段的執行緒 ID。
REQUESTING_EVENT_ID
在要求鎖定的工作階段中造成鎖定請求的 Performance Schema 事件。
REQUESTING_OBJECT_INSTANCE_BEGIN
要求鎖定的記憶體位址。
BLOCKING_ENGINE_LOCK_ID
封鎖鎖定的 ID。若要取得鎖定的詳細資料,請將此欄位與
data_locks
表格的ENGINE_LOCK_ID
欄位聯結。BLOCKING_ENGINE_TRANSACTION_ID
持有封鎖鎖定的交易的儲存引擎內部 ID。
BLOCKING_THREAD_ID
持有封鎖鎖定的工作階段的執行緒 ID。
BLOCKING_EVENT_ID
導致持有鎖定的工作階段中發生阻塞鎖的 Performance Schema 事件。
BLOCKING_OBJECT_INSTANCE_BEGIN
阻塞鎖在記憶體中的位址。
data_lock_waits
資料表具有以下索引
索引於 (
REQUESTING_ENGINE_LOCK_ID
,ENGINE
)索引於 (
BLOCKING_ENGINE_LOCK_ID
,ENGINE
)索引於 (
REQUESTING_ENGINE_TRANSACTION_ID
,ENGINE
)索引於 (
BLOCKING_ENGINE_TRANSACTION_ID
,ENGINE
)索引於 (
REQUESTING_THREAD_ID
,REQUESTING_EVENT_ID
)索引於 (
BLOCKING_THREAD_ID
,BLOCKING_EVENT_ID
)
不允許對 data_lock_waits
資料表使用 TRUNCATE TABLE
指令。