文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


29.12.13.1 data_locks 表格

data_locks 表格顯示持有和請求的資料鎖定。如需瞭解哪些鎖定請求被哪些已持有的鎖定封鎖,請參閱第 29.12.13.2 節,「data_lock_waits 表格」

資料鎖定資訊範例

mysql> SELECT * FROM performance_schema.data_locks\G
*************************** 1. row ***************************
               ENGINE: INNODB
       ENGINE_LOCK_ID: 139664434886512:1059:139664350547912
ENGINE_TRANSACTION_ID: 2569
            THREAD_ID: 46
             EVENT_ID: 12
        OBJECT_SCHEMA: test
          OBJECT_NAME: t1
       PARTITION_NAME: NULL
    SUBPARTITION_NAME: NULL
           INDEX_NAME: NULL
OBJECT_INSTANCE_BEGIN: 139664350547912
            LOCK_TYPE: TABLE
            LOCK_MODE: IX
          LOCK_STATUS: GRANTED
            LOCK_DATA: NULL
*************************** 2. row ***************************
               ENGINE: INNODB
       ENGINE_LOCK_ID: 139664434886512:2:4:1:139664350544872
ENGINE_TRANSACTION_ID: 2569
            THREAD_ID: 46
             EVENT_ID: 12
        OBJECT_SCHEMA: test
          OBJECT_NAME: t1
       PARTITION_NAME: NULL
    SUBPARTITION_NAME: NULL
           INDEX_NAME: GEN_CLUST_INDEX
OBJECT_INSTANCE_BEGIN: 139664350544872
            LOCK_TYPE: RECORD
            LOCK_MODE: X
          LOCK_STATUS: GRANTED
            LOCK_DATA: supremum pseudo-record

與大多數效能架構資料收集不同,沒有用於控制是否收集資料鎖定資訊的工具,也沒有用於控制資料鎖定表格大小的系統變數。效能架構收集伺服器中已提供的資訊,因此不會產生任何記憶體或 CPU 額外負荷來產生此資訊,或需要參數來控制其收集。

使用data_locks 表格,以協助診斷在大量並行負載期間發生的效能問題。對於 InnoDB,請參閱第 17.15.2 節,「InnoDB INFORMATION_SCHEMA 交易和鎖定資訊」中關於此主題的討論。

data_locks 表格具有下列欄位

  • ENGINE

    持有或請求鎖定的儲存引擎。

  • ENGINE_LOCK_ID

    儲存引擎持有或請求的鎖定 ID。( ENGINE_LOCK_ID, ENGINE) 值組是唯一的。

    鎖定 ID 格式是內部的,並且隨時可能變更。應用程式不應依賴特定格式的鎖定 ID。

  • ENGINE_TRANSACTION_ID

    請求鎖定的交易之儲存引擎內部 ID。這可以視為鎖定的擁有者,儘管鎖定可能仍處於擱置狀態,尚未實際授予 (LOCK_STATUS='WAITING')。

    如果交易尚未執行任何寫入操作 (仍被視為唯讀),則該欄包含使用者不應嘗試解譯的內部資料。否則,該欄就是交易 ID。

    對於 InnoDB,若要取得關於交易的詳細資訊,請將此欄與 INFORMATION_SCHEMA INNODB_TRX 表格的 TRX_ID 欄連接。

  • THREAD_ID

    建立鎖定的工作階段的執行緒 ID。若要取得執行緒的詳細資訊,請將此欄與效能架構(Performance Schema)threads 表格的 THREAD_ID 欄位合併。

    THREAD_ID 可與 EVENT_ID 一起使用,以判斷在記憶體中建立鎖定資料結構的事件。(如果資料結構用於儲存多個鎖定,則此事件可能發生在此特定鎖定請求發生之前。)

  • EVENT_ID

    導致鎖定的效能架構事件。(THREAD_ID, EVENT_ID) 值的元組隱式地識別其他效能架構表格中的父事件

    • events_waits_xxx 表格中的父等待事件

    • events_stages_xxx 表格中的父階段事件

    • events_statements_xxx 表格中的父陳述式事件

    • events_transactions_current 表格中的父交易事件

    若要取得父事件的詳細資訊,請將 THREAD_IDEVENT_ID 欄位與適當的父事件表格中名稱相同的欄位合併。請參閱第 29.19.2 節,「取得父事件資訊」

  • OBJECT_SCHEMA

    包含鎖定表格的結構描述。

  • OBJECT_NAME

    鎖定表格的名稱。

  • PARTITION_NAME

    如果有的話,鎖定分割區的名稱;否則為 NULL

  • SUBPARTITION_NAME

    如果有的話,鎖定子分割區的名稱;否則為 NULL

  • INDEX_NAME

    如果有的話,鎖定索引的名稱;否則為 NULL

    實際上,InnoDB 總是會建立索引 (GEN_CLUST_INDEX),因此 InnoDB 表格的 INDEX_NAME 不會是 NULL

  • OBJECT_INSTANCE_BEGIN

    鎖定在記憶體中的位址。

  • LOCK_TYPE

    鎖定的類型。

    該值取決於儲存引擎。對於 InnoDB,允許的值為:用於列層級鎖定的 RECORD,以及用於表格層級鎖定的 TABLE

  • LOCK_MODE

    鎖定的請求方式。

    該值取決於儲存引擎。對於 InnoDB,允許的值為 S[,GAP]X[,GAP]IS[,GAP]IX[,GAP]AUTO_INCUNKNOWN。除了 AUTO_INCUNKNOWN 之外的鎖定模式,表示存在間隙鎖定。如需有關 SXISIX 和間隙鎖定的資訊,請參閱第 17.7.1 節,「InnoDB 鎖定」

  • LOCK_STATUS

    鎖定請求的狀態。

    該值取決於儲存引擎。對於 InnoDB,允許的值為 GRANTED(已持有鎖定)和 WAITING(正在等待鎖定)。

  • LOCK_DATA

    與鎖定相關聯的資料(如果有的話)。該值取決於儲存引擎。對於 InnoDB,如果 LOCK_TYPERECORD,則會顯示值,否則該值為 NULL。鎖定在主索引鍵索引上的鎖定,會顯示鎖定記錄的主索引鍵值。鎖定在次索引鍵索引上的鎖定,會顯示鎖定記錄的次索引鍵值,並附加主索引鍵值。如果沒有主索引鍵,LOCK_DATA 則會根據 InnoDB 群集索引使用規則(請參閱第 17.6.2.1 節,「群集索引和次索引」),顯示所選唯一索引的鍵值或唯一 InnoDB 內部列 ID 編號。LOCK_DATA 會針對在至高(supremum)虛擬記錄上取得的鎖定報告「supremum pseudo-record」。如果包含鎖定記錄的頁面在持有鎖定時寫入磁碟,因此不在緩衝池中,則 InnoDB 不會從磁碟提取該頁面。相反地,LOCK_DATA 會報告 NULL

data_locks 表格具有下列索引

  • ENGINE_LOCK_ID, ENGINE)上的主索引鍵

  • ENGINE_TRANSACTION_ID, ENGINE)上的索引

  • THREAD_ID, EVENT_ID)上的索引

  • OBJECT_SCHEMA, OBJECT_NAME, PARTITION_NAME, SUBPARTITION_NAME)上的索引

不允許對 data_locks 表格使用 TRUNCATE TABLE