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
。