【轉】Oracle學習筆記:INITRANS和MAXTRANS引數的作用

ljm0211發表於2012-06-20

每個塊都有一個塊首部。這個塊首部中有一個事務表。事務表中會建立一些條目來描 述哪些事務將塊上的哪些行/元素鎖定。這個事務表的初始大小由物件的INITRANS 設定指定。對於表,這個值預設為2(索引的INITRANS 也預設為2)。事務表會根據需要動態擴充套件,最大達到MAXTRANS 個條目(假設塊上有足夠的自由空間)。所分配的每個事務條目需要佔用塊首部中的23~24 位元組的儲存空間。注意,對於Oracle 10g,MAXTRANS 則會忽略,所有段的MAXTRANS 都是255。


也就是說,如果某個事物鎖定了這個塊的資料,則會在這個地方記錄事務的標識,當然那個事務要先看一下這個地方是不是已經有人佔用了,如果有,則去看看那個事務是否為活動狀態。如果不活動,比如已經提交或者回滾,則可以覆蓋這個地方。如果活動,則需要等待(閂的作用)

所以,如果有大量的併發訪問使用的這個塊,則引數不能太小,否則資源競爭將導致系統併發效能下降。

文章出處:DIY部落()

pctfree:當一個塊的使用空間達到100-pctfree值時,這個塊從自由列表脫離。比如pctfree為10,那麼當這個塊使用90%的時候將會脫離freeelist,後續的insert將不會用到這個block。
  
pctused:當一個block經歷delete操作使已使用空間降到pctused值後,此塊重新被加入freelist,後續的insert將會用到這個block。
  
initrans:初始化了一個block的同時進行的事務數,隨著事務數量增加可以達到maxtrans上界,一個trans在block裡包含24個位元組。

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

相關文章