DMT 模式下Oracle Extent空間管理 -- uet$ & fet$

tolywang發表於2010-06-18
在Oracle 8i之前,包括8i,一直用的是DMT(Dictionary ManagementTablespace)字典管理表空間,它工作的原理是向uet$(代表used-extent table)、fet$(代表free-extent table)表插入、刪除資料。當一個事務需要進行大量的擴充套件extent操作的時候,會向uet$表插入大量的資料,同時從fet$表中刪除相關紀錄的資訊;當某個表的高水線下降,進行extent的回縮操作的時候,從uet$表刪除大量的紀錄,並且插入到fet$表中。

空間管理引起對uet$,fet$的操作在大量extent的情況下嚴重影響效能所以這種管理表空間的方式是比較耗費資源的,尤其是發生大量extent操作的時候,對uet$、fet$表的DML操作會引發效能問題。從Oracle 8i開始,就引入了本地管理表空間(LMT)的概念,這裡對擴充套件段的管理不是放到字典表中,而是用一個Bitmap紀錄並進行操作,由於是對檔案進行操作,所以速度比較快,而且在Bitmap上,可以同時併發多個事務,所以速度快了。
 

sys.uet$與sys.fet$主要是序列化的問題,在高併發情況下可能要引起空間請求的等待
然後就是太多的extent,將引起uet$表的膨脹,因為uet$是使用系統回滾段的,最嚴重的情況下
也會引發系統回滾段的空間不夠(如drop一個很多extent的表)

碎片問題也是DMT表空間特有的,但是與uet$,fet$關係不大,主要是因為每個段的extent的大小不一致,以及pctincrease不等於0,導致每個段中的extent的大小也不一致頻繁的插入與刪除,將引發很多氣泡碎片, DMT的碎片問題,如果設計的好,是完全可以避免的

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

相關文章