什麼是Oracle高水位線

來源:互聯網
上載者:User

現在解釋下什麼是“高水位”:

oracle的邏輯儲存結構:資料表空間——>段——>區——> 塊

塊:是粒度最小的儲存單位,現在標準的塊大小是8K,ORACLE每一次I/O操作也是按塊來操作的,也就 是說當ORACLE從資料檔案讀資料時,是讀取多少個塊,而不是多少行.

區:由一系列相鄰的塊而組成,這也是ORACLE空間分配的基本單位,舉個例子來說,當我們建立一個表A 時,首先ORACLE會分配一區的空間給這個表,隨著不斷的INSERT資料到A,原來的這個區容不下插入的資料 時,ORACLE是以區為單位進行擴充的,也就是說再分配多少個區給A,而不是多少個塊.

段:是由一系列的區所組成,一般來說,當建立一個對象時(表,索引),就會分配一個段給這個對象.所 以從某種意義上來說,段就是某種特定的資料.如CREATE TABLE PM_USER,這個段就是資料區段,而CREATE INDEX ON PM_USER(NAME),ORACLE同樣會分配一個段給這個索引,但這是一個索引段了.查詢段的資訊可 以通過資料字典: SELECT * FROM USER_SEGMENTS來獲得,

資料表空間:包含段,區及塊.資料表空間的資料物理上儲存在其所在的資料檔案中.一個資料庫至少要有一個 資料表空間.

所有的oracle段都有一個在段內容納資料的上限,我們把這個上限稱為"high water mark"或HWM。這個HWM是一個標記,用來說明已經有多少沒有使用的資料區塊分配給這個segment。

HWM通常增長的幅度為一次5個資料區塊,原則上HWM只會增大,不會縮小,即使將表中的資料全部刪除 ,HWM還是為原值,由於這個特點,使 HWM很象一個水庫的曆史最高水位,這也就是HWM的原始含義,當 然不能說一個水庫沒水了,就說該水庫的曆史最高水位為0。但是如果我們在表上使用了 truncate命令 ,則該表的HWM會被重新置為0。

如何知道一個表的HWM?

a) 首先對錶進行分析:

ANALYZE TABLE <tablename> ESTIMATE/COMPUTE STATISTICS;

b) 查看相關資訊:

SELECT blocks, empty_blocks, num_rows FROM user_tables WHERE table_name =<tablename>;

[SYS@orcl] SQL>select segment_name,segment_type,blocks from dba_segments where segment_name='A';

SEGMENT_NAME SEGMENT_TYPE BLOCKS

------------ ------------ -------

A                  TABLE      8

可得到A表分配了8個blocks。

[TEST1@orcl] SQL>analyze table a compute statistics;

表已分析。

[TEST1@orcl] SQL>select num_rows,blocks,empty_blocks from user_tables where table_name='A'

NUM_ROWS     BLOCKS EMPTY_BLOCKS

---------- ---------- ------------

1          5            3

BLOCKS 列代表該表中曾經使用過得資料庫塊的數目,即水線。EMPTY_BLOCKS 代表分配給該表,但 是在水線以上的資料庫塊,即從來沒有使用的資料區塊.

[TEST1@orcl] SQL>delete from a;

[TEST1@orcl] SQL>analyze table a compute statistics;

表已分析。

[TEST1@orcl] SQL>select num_rows,blocks,empty_blocks from user_tables where table_name='A';

NUM_ROWS     BLOCKS EMPTY_BLOCKS

---------- ---------- ------------

0          5            3

[TEST1@orcl] SQL>select count(distinct dbms_rowid.rowid_block_number(rowid)||

2 dbms_rowid.rowid_relative_fno(rowid)) "used" from a;

used

----------

0    註:Used = 0 這表名沒有任何資料庫塊容納資料,即表中無資料

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.