讀書筆記-高階owi與oracle效能調整-segment

selectshen發表於2014-09-05
enq:hw-contention
為防止多個程式同時修改hwm而提供的鎖稱為hw鎖.想要移動hwm的程式必須獲得hw鎖.若在獲取hw鎖過程中發生爭用,則等待enq:hw- contention事件.hw鎖爭用大部份是因大量執行insert所引發的,偶爾也會因大量執行update在回滾估中發生hw鎖爭用現象.若是 update,表中段的擴充套件的大小雖然不多,但在建立回滾資料的過程中,需要回滾段的急速擴張.hw鎖爭用是在段的急速空間擴張時普遍出現的等待現象,有 時也會引發嚴重的效能下降.
oracle 10g起新增了in-memory undo功能.imu是將回滾資料存於共享池內的kti-undo區域的功能.kti-undo區域上儲存的回滾資料會由oracle被轉到 (flush)回滾段.因此從oracle 10g起,回滾段擴張引起的hw鎖爭用比之前版本有所減少,期待撤銷塊的讀寫工作減少會給整個系統帶來改善效能的效果,但對於imu的效能問題還不被人所 知,imu被多個in-memory undo鎖存器保護,為了使用相同kti-undo區域,在發生爭用時等待latch:in memeory undo latch事件.
減少hw鎖爭用的方法:
(1)oracle 9i起使用assm.大部份時候,assm保障令人滿意的結果.
(2)無論哪個版本,均使用適當大小的區.一般推薦使用5m左右,但這不是絕對值.
(3)oracle 8i起使用lmt,若不是特殊情況,則使用uniform size的extent,使用充分大的extent.
瞭解hwm位置的方法有許多,最簡單的方法是使用dbms_space.unused_space

enq:st-contention,enq:tt-contenttion
oracle 8i上使用dmt時,執行區分配之類的空間管理工作,oracle為同步相應工作而使用st鎖.st鎖在整個例項上只有一個.
特定時刻同時過多發生空間管理相關工作時,為實現同步,大部份會話等待獲取st鎖,因此發生效能下降.
oracle 8i起提供了減少st鎖爭用的三種方法:
(1)新增了lmt功能.
(2)擴大了tt鎖的使用.對這前使用st鎖的部份表空間相關的工作上會使用tt鎖.tt鎖與st鎖不同,每個表空間都可以使用一個,所以比使用st鎖時有減少爭用的效果.
(3)引入臨時表空間.

enq:us-contention
為了同步將回滾段聯機或離線的過程,執行該工作的伺服器程式或後臺程式應獲得us鎖.每個回滾段都分配一個us鎖.若在獲取us鎖的過程中發生爭用,則等 待enq:us-contention事件.伺服器程式應在開始事務時分配回滾估,但如果不存在可用的回滾段時,應該建立新的回滾段或將離線狀態的回滾段 聯機.事務變化頻繁時,將回滾段聯機的操作可能廣泛發生us鎖爭用.
一般系統上,突然將許多回滾段聯機的情況不多,因此us鎖爭用一般不經常發生.但是如果因系統上事務的修改量較大,而us鎖爭用持續發生,就要指定執行如下的10511事件.10511事件起到阻止smon將回滾段離線的作用.

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

相關文章