文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美國信紙) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


17.15.2.2 InnoDB 鎖定和鎖定等待資訊

當交易更新資料表中的列,或使用 SELECT FOR UPDATE 鎖定列時,InnoDB 會在該列上建立鎖定的清單或佇列。同樣地,InnoDB 會維護資料表層級鎖定的資料表鎖定清單。如果第二個交易想要更新列或鎖定先前交易以不相容模式鎖定的資料表,InnoDB 會將該列的鎖定要求新增至對應的佇列。為了讓交易取得鎖定,必須移除先前輸入該列或資料表之鎖定佇列的所有不相容鎖定要求 (這會在持有或要求這些鎖定的交易提交或回滾時發生)。

交易可能對不同的列或資料表有多個鎖定要求。在任何給定時間,交易可能會要求另一個交易持有的鎖定,在這種情況下,它會被另一個交易封鎖。要求鎖定的交易必須等待持有封鎖鎖定的交易提交或回滾。如果交易沒有等待鎖定,則它處於 RUNNING 狀態。如果交易正在等待鎖定,則它處於 LOCK WAIT 狀態。(INFORMATION_SCHEMA INNODB_TRX 資料表會指出交易狀態值。)

Performance Schema data_locks 資料表會針對每個 LOCK WAIT 交易保留一或多列,指出任何阻止其進度的鎖定要求。此資料表也包含一列,描述給定列或資料表待處理鎖定佇列中的每個鎖定。Performance Schema data_lock_waits 資料表會顯示交易已持有的哪些鎖定,會封鎖其他交易要求的鎖定。