Enqueue 鎖定機制
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 確定enqueue鎖型別ENQ型別
- ORACLE DML鎖定機制Oracle
- PHP 鎖機制PHP
- SQLite鎖機制SQLite
- Mysql鎖機制MySql
- Oracle鎖機制Oracle
- java鎖機制Java
- oracle 鎖機制Oracle
- SQL鎖機制SQL
- MySql(七):MySQL效能調優——鎖定機制與鎖優化分析MySql優化
- Mysql鎖機制分析MySql
- MS SQL鎖機制SQL
- oracle鎖機制研究Oracle
- mysql的鎖機制MySql
- 分散式鎖機制分散式
- [鎖機制] 鎖相關查詢
- Mysql中的鎖機制——MyISAM表鎖MySql
- synchronized鎖機制 之 程式碼塊鎖synchronized
- 資料庫鎖機制資料庫
- Mysql各種鎖機制MySql
- mysql myisam的鎖機制MySql
- mysql鎖機制總結MySql
- ORACLE鎖機制-轉載Oracle
- MySQL鎖機制與MVCCMySqlMVC
- oracle中的鎖機制Oracle
- 鎖機制優化MySQL優化MySql
- MaxDB有關鎖機制
- sqlserver鎖機制(轉載)SQLServer
- MySQL效能優化(九)-- 鎖機制之行鎖MySql優化
- 【鎖機制】共享鎖、排它鎖、悲觀鎖、樂觀鎖、死鎖等等
- MySQL InnoDB 中的鎖機制MySql
- CAS 無鎖式同步機制
- 【MySQL】MySQL中的鎖機制MySql
- 【MySQL】InnoDB鎖機制之一MySql
- ORACLE鎖機制深入理解Oracle
- 【MySQL】InnoDB鎖機制之二MySql
- MongoDB的鎖機制 (Concurrency)MongoDB
- MySQL 資料庫鎖定機制?這篇文章為你分析清楚~MySql資料庫