Oracle 作為一種大型資料庫,廣泛應用於金融、郵電、電力、民航等資料輸送量巨大,電腦網路廣泛普及的重要部門。對於系統管理員來講,如何保證網路穩定運行,如何提高資料庫效能,使其更加安全高效,就顯得尤為重要。作為影響資料庫效能的一大因素 -- 資料庫片段,應當引起 DBA 的足夠重視,及時發現並整理片段乃是 DBA 一項基本維護內容。
1、片段是如何產生的
當產生一個資料庫時,它會分成稱為資料表空間( Tablespace )的多個邏輯段( Segment ),如系統(System)資料表空間 , 臨時(Temporary)資料表空間等。一個資料表空間可以包含多個資料範圍(Extent)和一個或多個自由範圍塊,即自由空間(Free Space)。
資料表空間、段、範圍、自由空間的邏輯關係如下:
當資料表空間中產生一個段時,將從資料表空間有效自由空間中為這個段的初始範圍分配空間。在這些初始範圍充滿資料時,段會請求增加另一個範圍。這樣的擴充過程會一直繼續下去,直到達到最大的範圍值,或者在資料表空間中已經沒有自由空間用於下一個範圍。最理想的狀態就是一個段的資料可被存在單一的一個範圍中。這樣,所有的資料存放區時靠近段內其它資料,並且尋找資料可少用一些指標。但是一個段包含多個範圍的情況是大量存在的,沒有任何措施可以保證這些範圍是相鄰儲存的,當要滿足一個空間要求時,資料庫不再合并相鄰的自由範圍(除非別無選擇), 而是尋找資料表空間中最大的自由範圍來使用。這樣將逐漸形成越來越多的離散的、分隔的、較小的自由空間,即片段。例如:
2、片段對系統的影響
隨著時間推移,基於資料庫的應用系統的廣泛使用,產生的片段會越來越多,將對資料庫有以下兩點主要影響:
1)導致系統效能減弱。
如上所述,當要滿足一個空間要求時,資料庫將首先尋找當前最大的自由範圍,而 “最大”自由範圍逐漸層小,要找到一個足夠大的自由範圍已變得越來越困難,從而導致資料表空間中的速度障礙,使資料庫的空間分配愈發遠離理想狀態;
2)浪費大量的資料表空間。
儘管有一部分自由範圍(如資料表空間的 pctincrease 為非 0 )將會被 SMON (系統監控)後台進程周期性地合并,但始終有一部分自由範圍無法得以自動合并,浪費了大量的資料表空間。
【內容導航】 |
第1頁:逐步講解 Oracle資料庫片段如何整理 |
第2頁:逐步講解 Oracle資料庫片段如何整理 |