Enqueue 鎖定機制

xz43發表於2010-12-17

enqueue是一種保護共享資源的鎖定機制。該鎖定機制保護共享資源,如記錄中的資料,以避免兩個人在同一時間更新同一資料。enqueue包括一個排隊機制,即FIFO(先進先出)排隊機制。

Enqueue等待常見的有ST、HW 、TX 、TM等

ST enqueue  用於空間管理和字典管理的表空間(DMT)的區間分配,在DMT中典型的是對於uet$和fet$資料字典表的 爭用。對於支援LMT的版本,應該儘量使用本地管理表空間, 或者考慮手工預分配一定數量的區(Extent),減少動態擴充套件時發生的嚴重佇列競爭。

HW enqueue  指和段的高水位標記相關等待;手動分配適當區可以避免這一等待。

TX enqueue  是最常見的enqueue等待。TX enqueue等待通常是以下三個問題之一產生的結果。
第一個問題是唯一索引中的重複索引,你需要執行提交(commit)/回滾(rollback)操作來釋放enqueue。
第二個問題是對同一點陣圖索引段的多次更新。因為單個點陣圖段可能包含多個行地址(rowid),所以當多個使用者試圖更新同一段時,可能一個使用者會鎖定其他使用者請求的記錄,這時等待出現。直到獲得鎖定的使用者提交或回滾,enqueue釋放。
第三個問題,也是最可能發生的問題是多個使用者同時更新同一個塊。如果沒有足夠的ITL槽,就會發生塊級鎖定。透過增大initrans和/或maxtrans以允許使用多個ITL槽(對於頻繁併發進行DML操作的資料表,在建表之初就應該考慮為相應引數設定合理的數值,避免系統執行以後線上的更改,在8i之前,freelists等引數不能線上更改,設計時的考慮就尤為重要),或者增大表上的pctfree值,就可以很容易的避免這種情況。

TM enqueue  佇列鎖在進行DML操作前獲得,以阻止對正在操作的資料表進行任何DDL操作(在DML操作一個資料表時,其結構不能被更改)。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9399028/viewspace-682024/,如需轉載,請註明出處,否則將追究法律責任。

相關文章