Heim > Datenbank > MySQL-Tutorial > Oracle 高水位线详解

Oracle 高水位线详解

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Freigeben: 2016-06-07 17:27:39
Original
1179 Leute haben es durchsucht

所有的oracle段(segments,在此,为了理解方便,建议把segment作为表的一个同义词) 都有一个在段内容纳数据的上限,我们把这个上

一、什么是水线(High Water Mark)?
 
所有的Oracle段(segments,在此,为了理解方便,建议把segment作为表的一个同义词) 都有一个在段内容纳数据的上限,我们把这个上限称为"high water mark"或HWM。这个HWM是一个标记,用来说明已经有多少没有使用的数据块分配给这个segment。HWM通常增长的幅度为一次5个数据块,原则上HWM只会增大,不会缩小,即使将表中的数据全部删除,HWM还是为原值,由于这个特点,使HWM很象一个水库的历史最高水位,这也就是HWM的原始含义,当然不能说一个水库没水了,就说该水库的历史最高水位为0。但是如果我们在表上使用了truncate命令,则该表的HWM会被重新置为0。
 
         
 
二、HWM数据库的操作有如下影响:
 
a) 全表扫描通常要读出直到HWM标记的所有的属于该表数据库块,即使该表中没有任何数据。
 
b) 即使HWM以下有空闲的数据库块,,键入在插入数据时使用了append关键字,则在插入时使用HWM以上的数据块,此时HWM会自动增大。
 
               

三、如何知道一个表的HWM?
 
a) 首先对表进行分析:
 
ANALYZE TABLE ESTIMATE/COMPUTE STATISTICS;
 
b) SELECT blocks, empty_blocks, num_rows
 
FROM user_tables
 
WHERE table_name = ;
 
说明:
 
BLOCKS 列代表该表中曾经使用过得数据库块的数目,即水线。
 
EMPTY_BLOCKS 代表分配给该表,但是在水线以上的数据库块,即从来没有使用的数据块。
 
           
 
让我们以一个有28672行的BIG_EMP1表为例进行说明:
 
1) SQL> SELECT segment_name, segment_type, blocks
 
FROM dba_segments
 
WHERE segment_name='BIG_EMP1';
 
SEGMENT_NAME      SEGMENT_TYPE    BLOCKS   
 
-----------------  --------------  ---------
 
BIG_EMP1          TABLE          1024     
 
1 row selected.           
 
               
 
2) SQL> ANALYZE TABLE big_emp1 ESTIMATE STATISTICS;
 
Statement processed.
 
           

3) SQL> SELECT table_name,num_rows,blocks,empty_blocks
 
FROM user_tables
 
WHERE table_name='BIG_EMP1';
 
TABLE_NAME  NUM_ROWS  BLOCKS    EMPTY_BLOCKS
 
----------  --------  -------    -------------
 
BIG_EMP1    28672    700        323
 
1 row selected.
 
注意:
 
BLOCKS + EMPTY_BLOCKS (700+323=1023)比DBA_SEGMENTS.BLOCKS少1个数据库块,这是因为有一个数据库块被保留用作segment header。DBA_SEGMENTS.BLOCKS 表示分配给这个表的所有的数据库块的数目。USER_TABLES.BLOCKS表示已经使用过的数据库块的数目。

linux

Verwandte Etiketten:
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage