Oracle高水位High Water Mark(HWM)简介

  1.什么是高水位

  高水位是Oracle中使用和未使用空间中的边界线,也可以理解为数据文间和非数据文间的分界线,但是这里的数据文件指代的是存储过数据的数据文件,而非仅仅是数据表中有数据的数据文件。

  2.高水位对于检索的影响

  假设我们有个表有2百万行数据存储在几个区中,假如我们删除一百万条数据。尽管数据区中的数据没有了,但是Oracle中占用的区的数据空间仍然不变,与原来二百万条数据占用的数据空间是一样的。当我们在数据库中执行查询时,Oracle仍会遍历所有的数据块,即便这些数据块中没有数据。从这个角度来说,高水位可以理解为已使用的数据块或数据区。

  高水位下的数据块中至少有一块是有数据的,当然这些数据也可能被删除掉了。由于Oracle知道高水位上的数据区是没有数据的,所以它在读取数据时只读取到高水位线。正是这个原理,当数据库中的表数据增大到一定的数据量时,如果将表中的数据移动到一个新的历史表中,并将当前表中的数据清空,并不会提高当前数据表的检索效率。因为数据的高水位没有变。

  如果数据库中的大部分数据被删除了,应该使用Shrink命令降低高水位,这样才能提高数据的查询效率。当然如果使用数据库分区表也就是另外一种解决方案了。

时间: 2024-08-04 19:13:22

Oracle高水位High Water Mark(HWM)简介的相关文章

高水线 High water mark(HWM)

所有的Oracle表都有一个容纳数据的上限(很像一个水库历史最高的水位),我们把这个上限称为"High water mark"或HWM.这个HWM是一个标记(专门有一个数据块来记录高水标记等),用来说明已经有多少数据块分配给这个表.HWM通常增长的幅度为一次5个数据块.          高水线的作用,HWM对数据库的操作有如下影响: 全表扫描通常要读出直到HWM标记的所有的属于该表数据块,即使该表中没有任何数据. 即使HWM以下有空闲的数据块,键入在插入数据时使用了append关键字

Oracle 高水位(HWM: High Water Mark)

一. 准备知识:ORACLE的逻辑存储管理. ORACLE在逻辑存储上分4个粒度: 表空间, 段, 区 和 块. 1.1 块: 是粒度最小的存储单位,现在标准的块大小是8K,ORACLE每一次I/O操作也是按块来操作的,也就是说当ORACLE从数据文件读数据时,是读取多少个块,而不是多少行. 每一个Block里可以包含多个row. 1.2 区: 由一系列相邻的块而组成,这也是ORACLE空间分配的基本单位,举个例子来说,当我们创建一个表Dave时,首先ORACLE会分配一区的空间给这个表,随着不

Oracle 高水位说明和释放表空间,加快表的查询速度

高水位的介绍 数据库运行了一段时间,经过一些列的删除.插入.更改操作有些表的高水位线就有可能和实际的表存储数据的情况相差特别多,为了提高检索该表的效率,建议对这些表进行收缩: 查找高水位线的表 查找表需要的存储空间:表以数据块的形式存储在数据文件中,表的存储结构是:行×行数,如果知道了总共有多少行,每行的平均长度,两者相乘,再除于90%的使用率,那么就可以知道实际需要存储的空间: 表的存储结构; 从统计信息得出平均每行的长度和总共的行数,从而知道存储的SIZE: 查找表实际存储的空间:数据实际存

探究 Oracle 高水位对数据库性能影响

2016-08-11 陈龙 恩墨学院 探究 Oracle 高水位对数据库性能影响1大家好!我是来自云和恩墨的陈龙,目前主要负责Oracle技术支持工作.在我开始学习Oracle 的时候就听eygle老师说过,要想学好技术,一定要要多做实验,多做学习记录,理论与实践相结合,才能真正理解吸收那些知识,所以今天我想分享一下对Oracle高水位线与SQL访问性能相关性的研究体会.谈不上很深入的研究,只是想与大家分享我的Oracle学习过程,希望能与大家交流进步.之所以分享这个学习内容,是因为在我曾经经历

oracle高水位

oracle高水位http://www.cnblogs.com/chuyuhuashi/p/3548260.htmlhttp://blog.csdn.net/wyzxg/article/details/5631721 数据表删除数据或者数据分区后,数据文件并没有减小.这是oracle数据库高数位high water mark造成的.尽管用delete删除了数据,数据已经不在数据块中,但是,原有的数据块并不会被回收回去,只是被标记为空闲可用的了.就是说空间只要被划分给了oracle,形式上就会被o

Oracle 高水位(HWM)回收原理及操作方法

一.  高水位(HWM)及其产生原因 High Water Mark,HWM) 是Oracle(Segment)级别的概念.在仅有DML(比如delete,insert)操作时,高水位线只会增长,不会降低.具体来说,由于程序使用的delete语句不回收使用过的空间,数据虽然删除了,但是高水位线却没有降低,仍然处于之前的水位. 下图为一个Segment内高水位不断增长的示意图: 注:一个表在初次插入记录时,Oracle会为其分配Segment和block. 插入大量数据后,高水位线随之增长 当数据

[Oracle]高水位标记(HWM)

(一)高水位标记(High Water Mark,HWM)的概念 所谓高水位标记,是指一个已经分配的段中,已经使用的空间与未使用的空间的分界线.在表的使用过程中,随着数据的不断增多(insert),HWM不断向数据段未使用部分方向移动,而在删除数据(delete)的过程中,HWM并不会向反方向移动,即使删除全部数据,HWM依然不会改变.但是如果使用了truncate命令,则表的HWM会被重置为0. 图1.segment (二)高水位标记的影响 全表扫描要读出直到HWM标记的所有的属于该表的数据块

Oracle 高水位问题

Oracle 对数据段的管理有一个高水位(HWM, High Water Mark)的概念.高水位是数据段中使用过和未使用过的数据块的分界线.高水位以下的数据块是曾使用过的,以上的是从未被使用或初始化过的. 当 Oracle 进行全表扫描(FTS, Full table scan)的操作时,它会读高水位下的所有数据块.如果高水位下还有很多空闲空间(碎片),读取这些空闲数据块会降低操作的性能. 当针对一个表的删除操作很多时,表会产生大量碎片.删除操作释放的空间不会被插入操作立即重用,甚至永远也不会

[转]Oracle High Water Level高水位分析

PLSQL_性能优化系列14_Oracle High Water Level高水位分析 http://www.cnblogs.com/eastsea/p/4005814.html 一.摘要 PLSQL_性能优化系列14_Oracle High Water Level高水位分析 高水位线好比水库中储水的水位线,用于描述数据库中段的扩展方式.高水位线对全表扫描方式有着至关重要的影响. 当使用delete 操作表记录时,高水位线并不会下降,随之导致的是全表扫描的实际开销并没有任何减少. 本文给出高水位