table/segment/extent/block之間關係

yuan22003發表於2011-08-24

這些都是Oracle儲存的邏輯結構。
BLOCK是Oracle儲存的最基本單位,由DB_BLOCK_SIZE制定,通常為8KB,也可以定義為2KB,4KB,16KB,32KB,64KB等,磁碟最小儲存單位是sector(512BYTE),Oracle資料塊由連續的sector組成,Oracle讀寫單位是資料塊,應儘量設定BLOCK大小為磁碟資料塊大小的整數倍,避免IO浪費
連續的資料塊組成一個分割槽extent,便於空間管理,包括空間的分配和釋放。段的空間是以分割槽為單位分配的。提高了分配空間的效率,但是帶來了空間碎片。
Oracle每個表或索引都會對應這一個段。如果使用分割槽表或者分割槽索引,每個分割槽(partition)都對應著一個段。每個段都有名字,即物件(表、索引)的名字,段由extent組成,但不要求連續。

一個table至少是一個segment,如果分割槽表,則每個分割槽是一個segment,table可以看成是一個邏輯上的概 念,segment可以看成是這個邏輯概念的物理實現;segment由一個或多個extents組成,segment不可以跨表空間但可以跨資料檔案;extent由多個連續的blocks組成,不可以跨資料檔案;block由1-多個os塊組成,是oracle i/o的最小儲存單位。

相關文章