Oracle資料庫表之段

2021-09-01 10:08:44 字數 1225 閱讀 4499

一. 段型別

oracle中的段(segment)是占用磁碟上儲存空間的乙個物件,不同型別的段儲存了不同的資料,管理儲存空間的方式也不相同。

主要幾種段型別:

2. 表:用於儲存乙個表的資料,通常與索引段聯合使用。最常見的段,用於儲存表資料的。

3. 表分割槽:用於分割槽。

4. 索引:這種段型別可以儲存索引結構。

5. 索引分割槽:與表分割槽類似,主要是管理分割槽表的。

6. 巢狀表:為巢狀表指定的段型別。

7. 回滾段:undo資料儲存所在地。

比如:這條sql語句 create table t ( x int primary key, y clob, z blob ); 會建立6個段。

1. 表本身是乙個段

2. 主鍵約束建立了乙個索引段

3. 每乙個lob列分別建立了2個段,乙個段用於儲存字元大物件(clob)或二進位製大物件(blob)所指的實際資料塊,另乙個段用於組織這些資料塊。

二. 段空間管理

管理方式有2種:手動與自動

三. 高水位線

高水位線是針對表段而言,表段儲存了很多使用者資料。把表段想象成從左到右依次排開的一系列塊,高水平線(high-water mark,hwm)就是包含了資料的最右邊的塊,如下圖所示:

上圖顯示了hwm首先位於新建立表的第乙個塊中。過一段時間後,隨著在這個表中放入資料,而且使用了越來越多的塊,hwm會公升高。如果我們刪除了表中的一 些(甚至全部)行,可能就會有許多塊不再包含資料,但是它們仍在hwm之下,而且這些塊會一直保持在hwm之下,直到重建、截除或收縮這個物件。

hwm很重要,因為oracle在全面掃瞄段時會掃瞄hwm之下的所有塊,即使其中不包含任何資料。這會影響全面掃瞄的效能,特別是當hwm之下的大多數塊都為空時。

四. freelists

freelists 為手動段空間管理時候的乙個引數,手動段空間管理也就是手動表空間管理,只有段所在的表空間為手段管理,段空間才為手動管理。在往表段插入資料的時候,會先找freelist,freelist上掛的都是空閒的塊,可以被使用。如果只有乙個freelist,那麼併發的插入,就會效能很差。所以freelist的數量要配置得合適才行。但是,太大了也不行。假如配置了100個freelist,但是最多隻可能用到10個。就會浪費許多空間。

如果採用自動段空間管理,就沒有這個問題了,資料庫會自動進行設定。

oracle資料庫表 段 區 塊的區別

oracle的邏輯結構 包括表空間 tablespace 段 segment 區 extent 資料塊 data block oracle資料庫 在邏輯上是由多個表間組成的,表空間 中儲存的物件叫段,比如資料段,索引段,和回退段。段由區組成,區是磁碟分配的最小單位 段的增大是通過增加區的個數來實現的...

Oracle資料庫之表空間

表空間 1.表空間的建立 建立表空間的時候需要指定該錶空間的物理檔案 create tablespace user1 datafile d oracle user1 data.dbf size 20m 表空間名字 user1 物理檔案 user1 data.dbf 大小20m 目錄 d oracle...

Oracle資料庫表空間 段 區和塊

在接觸oracle之前使用過mysql,不得不說兩種資料庫差別很大,比如oracle的表空間。好不容易終於對oracle資料庫的表空間 段 區和塊這幾個概念有乙個稍微清晰的理解了。這幾個概念都屬於邏輯結構上的,主要是oracle為了對使用者遮蔽掉底層作業系統的差異。塊是oracle資料庫處理資料最基...