高水位问题

本文探讨了Oracle数据库中高水位(HWM)的概念及其影响。高水位标记区分了段中已使用的块和未使用的块,在插入数据时会向上移动,但删除数据后不会下降,导致全表扫描时需要读取更多块,影响性能。文章通过实例展示了高水位导致的全表扫描时间延长,并分析了直接路径插入如何加剧空间浪费。
摘要由CSDN通过智能技术生成

前些天,同事说一张空表查询要花了大概40分钟,DELETE的时候也是,在一些Q群上问些有经验的人说可能是高位线的问题.

于是让他查下该表所占的空间有多大.如图:


一张空表居然占了184704个块,然后让他把那表TRUNCATE后,再查就只有8个块.这样就更加的肯定是高水位的原因.

一个块一般是8K,这样的话,这张空表就占了184704*8=1477632K=1443M.对1G多的空间进行全表扫描的话,可想而知需要花费的时间要很长.


下面是关于高水位的一些内容,参考:http://jolly10.itpub.net/post/7268/466758

一般ORACLE的逻辑存储有4个粒度,块,区,段,表空间.

其中,块是最小的存储单元.一般的块所占的空间一般是8K,但也有2K,4K,16K,32K这样配置,具体通过参数db_block_size来设置.

2):由一系列相邻的块而组成,这也是ORACLE空间分配的基本单位,举个例子来说,当我们创建一个表PM_USER,首先ORACLE会分配一区的空间给这个表,随着不断的INSERT数据到PM_USER,原来的这个区容不下插入的数据时,ORACLE是以区为单位进行扩展的,也就是说再分配多少个区给PM_USER,而不是多少个块.

(3):是由一系列的区所组成,一般来说,当创建一个对象时(,索引),就会分配一个段给这个对象.所以从某种意义上来说,段就是某种特定的数据.CREATE TABLE PM_USER,这个段就是数据段,CREATE INDEX ON PM_USER(NAME),ORACLE同样会分配一个段给这个索引,但这是一个索引段了.查询段的信息可以通过数据字典: SELECT * FROM USER_SEGMENTS来获得,

(4)表空间:包含段,区及块.表空间的数据物理上储存在其所在的数据文件中.一个数据库至少要有一个表空间.

OK,我们现在回到HWM上来,那么,什么是高水位标?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值