Oracle 邏輯存儲結構--表空間 段 區 塊 & 高水位線 HWM

Part 1  Oracle 邏輯存儲結構

一、各層邏輯結構組成

1個數據庫被分成不同的邏輯單元 即 表空間 (表空間的物理結構就是 數據文件)

1個表空間裏面的表,索引 由 段組成 (數據段,索引段等,臨時段)

1段由一塊塊並不連續的區組成

1個區有一組數量固定(一般是8個)並且連續的(oracle邏輯塊 而不是 OS數據文件塊)

 

二、各層說明

1. 塊:

數據庫最小的存儲結構,也是數據庫讀取數據的最小單位; 大小有 DB_BLOCK_SIZE決定;

包含 表目錄,行目錄及行數據等信息;

當行過長時會 採用行鏈接 關聯兩個塊;        當update將行變長時,回來用行遷移至一個更大的空間;

自動管理--位圖   ;; 手動管理 PCTUSED-- 小於這個百分比才有可用  PCTFREE--最小的可用空間預留比;

 

據塊是有大小的,在一個數據庫建立的時候,通過參數進行設置。注意,在Oracle數據庫參數中,只有數據塊大小的參數是建庫之後不能進行修改的。數據塊的大小,在一個數據庫中可以支持多個,但是一般沒有太大的意義,會給管理和調試帶來一定的負擔。

數據塊的大小是通過kb字節個數來指定的,默認爲8KB。相關參數爲db_block_size;

 

2. 區(extent)

一段連續的數據塊組成的邏輯存儲單元;

可以通過參數指定如何增長新區的分配;

是每一次增加分配的最小單位

 

3.段(segemnt)

表由段組成, 普通表由一個段組成,分區表由多個段組成, 段;

段由區組成,並且可以根據數據增加分配新的區而增加

3.1 段的管理方式是通過手動或自動管理段中可用的塊

a.手動管理: 自由列表的方式管理可用的塊

b.自動管理(ASSM):  位圖方式管理可用的塊

詳細參考11g DBA手冊 150頁左右

農場比喻參考 收穫,不止oracle P86

三、表空間管理方式

1. 字典管理: 通過字典表管理管理  區 的使用情況 (不推薦)

2. 本地管理: 通過位圖方式,存放於數據文件頭,每個位bit對應 block的情況

 

四、HWH 高水位線概念

(一)ORACLE用HWM來界定一個段中使用的塊和未使用的塊.
舉個例子來說,當我們創建一個表:PT_SCHE_DETAIL時,ORACLE就會爲這個對象分配一個段.在這個段中,即使我們未插入任何記錄,也至少有一個區被分配,第一個區的第一個塊就稱爲段頭(SEGMENT HEADE),段頭中就儲存了一些信息,基中HWM的信息就存儲在此.此時,因爲第一個區的第一塊用於存儲段頭的一些信息,雖然沒有存儲任何實際的記錄,但也算是被使用,此時HWM是位於第2個塊.當我們不斷插入數據到PM_USER後,第1個塊已經放不下後面新插入的數據,此時,ORACLE將高水位之上的塊用於存儲新增數據,同時,HWM本身也向上移.也就是說,當我們不斷插入數據時,HWM會往不斷上移,這樣,在HWM之下的,就表示使用過的塊,HWM之上的就表示已分配但從未使用過的塊.

 

(二)HWM在插入數據時,當現有空間不足而進行空間的擴展時會向上移,但刪除數據時不會往下移.

這就好比是水庫的水位,當漲水時,水位往上移,當水退出後,最高水位的痕跡還是清淅可見.
考慮讓我們看一個段,如一張表,其中填滿了塊,如圖 1 所示。在正常操作過程中,刪除了一些行,如圖 2 所示。現有就有了許多浪費的空間:(I) 在表的上一個末端和現有的塊之間,以及 (II) 在塊內部,其中還有一些沒有刪除的行。

HWM01

圖1:分配給該表的塊。用灰色正方形表示行

ORACLE 不會釋放空間以供其他對象使用,有一條簡單的理由:由於空間是爲新插入的行保留的,並且要適應現有行的增長。被佔用的最高空間稱爲最高使用標記 (HWM),如圖 2 所示。

HWM02 
圖2:行後面的塊已經刪除了;HWM 仍保持不變

 

(三)HWM的信息存儲在段頭當中.
HWM本身的信息是儲存在段頭.在段空間是手工管理方式時,ORACLE是通過FREELIST(一個單向鏈表)來管理段內的空間分配.在段空間是自動管理方式時(ASSM),ORACLE是通過BITMAP來管理段內的空間分配.

 

(四)ORACLE的全表掃描是讀取高水位標記(HWM)以下的所有塊.

所以問題就產生了.當用戶發出一個全表掃描時,ORACLE 始終必須從段一直掃描到 HWM,即使它什麼也沒有發現。該任務延長了全表掃描的時間。

 

(五)當用直接路徑插入行時 — 例如,通過直接加載插入(用 APPEND 提示插入)或通過 SQL*LOADER 直接路徑 — 數據塊直接置於 HWM 之上。它下面的空間就浪費掉了。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章