1 / 10
文档名称:

oracle 高水位线详解.doc

格式:doc   页数:10页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

oracle 高水位线详解.doc

上传人:xxj16588 2016/5/14 文件大小:0 KB

下载得到文件列表

oracle 高水位线详解.doc

相关文档

文档介绍

文档介绍:oracle 高水位线详解一、 oracle 高水位线详解一、什么是水线(High Water Mark)? 所有的 oracle 段(segments , 在此, 为了理解方便, 建议把 segmen t 作为表的一个同义词) 都有一个在段内容纳数据的上限, 我们把这个上限称为"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 <tablename> PUTE STATISTICS; b) SELECT blocks, empty_blocks, num_rows FROM user_tables WHERE table_name = <tablename>; 说明: 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) 比 少 1 个数据库块,