DB2 鎖機制可類比建築物:
進入房間 (頁鎖) 前,必須先取得建築物 (表空間鎖) 與樓層 (表鎖)。這些外層鎖稱為 Intent Lock (意向鎖):
IX:意圖排他 (Intent eXclusive)IS:意圖共享 (Intent Share)SIX = Share + Intent Exclusive。它同時表達:
LOCK TABLE mytable IN SHARE MODE → 取得表空間 IS、表 SX 鎖規則 1: 單一實體同一時間只能持有一個鎖
規則 2: 需要兩種鎖時,取限制較嚴者 (X > S)
規則 3: 高層鎖必須報告可能存在的低層鎖
X → 表空間 IS 必須升級為 IX (報告低層有 X)S (報告無低層 S) 與新需求 IX (報告有低層 X) 衝突 → 協商產生 SIX
SIX 僅與 IS 相容。這意味著:
IS/IS/S 協定 → 成功IX/IX/X 或 LOCK TABLE ... IN SHARE/EXCLUSIVE MODE → 表層被拒持有 SIX 的程式可在無頁鎖開銷下執行讀取,僅在維護時取得頁鎖,完美平衡並發與保護。
SIX 鎖解決了「需共享表給讀取者,又需獨佔頁面給維護」的雙重需求。它是 DB2 鎖機制中精巧的協商產物,確保高層鎖正確反映低層鎖狀態,避免錯誤的共享假設。