高水位是表段的一个属性,是存储过数据的数据块的下一个数据块块号,当向表添加数据时,只能加进高水位前面的数据块,当高水位前面没有足够的数据块容纳新加入的数据时,Oracle会向后移动高水位,前5次,每次向后移动1个数据块,5次之后,每次向后移动5个数据块,很明显,高水位之前也可能会存在空的数据块。
high water mark对应的数据块,可能属于另外一个segment。
高水位也是全表扫描时,Oracle要读取的数据块的上限。
可以通过导出段被分配的第一个数据块,得到其当前的high water mark值,也可以通过对表进行分析后,查询dba_tables的blocks列值,然后加1得到。
对表删除数据后,虽然可能会产生很多空数据块,但高水位并不会降低,从而严重影响全表扫描的效率,可以通过命令:
alter table xxx move
降低其高水位。
可以参考关于高水位的实验及dba_tables及dba_segment中的block列
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/37724/viewspace-152541/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/37724/viewspace-152541/