暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

Oracle高水位线 HWM降低技巧

原创 IT邦德 2021-08-29
2393
作者:IT邦德

中国DBA联盟(ACDU)成员,目前从事DBA及程序编程(Web\java\Python)工作,主要服务于生产制造
现拥有 Oracle 11g  OCP/OCM、Mysql、Oceanbase(OBCA)认证
分布式TBase\TDSQL数据库、国产达梦数据库以及红帽子认证
从业8年DBA工作,在数据库领域有丰富的经验
B站主播Oracle、Mysql、PG实战课程,请搜索:jeames007

微信:jem_db
QQ交流群:168797397

导读

1)什么是高水位线?
高水位线(high-water mark,HWM)
在数据库中,如果把表想象成从左到右依次排开的一系列块,高水位线就是曾经包含了数据 的最右边的块。
原则上 HWM 只会增大,
即使将表中的数据全部删除,HWM 也不会降低。
2)HWM 有利有弊,
优点:可以使 HWM 以下的块重复利用
缺点:使用全表扫描时要读取 HWM 以下的所有 block,耗费更多的 IO 资源。

image.png

1.如何降低 HWM 高水位线

多种方法可以降低 HWM:
移动表
收缩表
导入导出表
在线重定义表

2.收缩表 shrink

Shrink 方法,也叫段重组,表收缩的底层实现的是通过匹配的 INSERT 和 DELETE 操作

image.png

SYS@PROD> create table scott.t3 as select * from dba_objects;
SYS@PROD> select count(*) from scott.t3;
analyze table scott.t3 compute statistics;


select k.table_name,k.blocks,k.empty_blocks,num_rows from dba_tables k
where k.owner ='SCOTT'
and k.table_name ='T3'

image.png

SYS@PROD> delete from scott.t3 where rownum<4000;
analyze table scott.t3 compute statistics;

num_rows 已经减掉了 4000 条, 但 blocks 并没有减少, 说明 HWM 没有下降。

image.png

开启行迁移
SYS@PROD> alter table scott.t3 enable row movement;

--先压缩
alter table scott.t3 shrink space compact;
analyze table scott.t3 compute statistics for table;

--降低水位线
alter table scott.t3 shrink space;

--关闭行迁移
alter table scott.t3 disable row movement;

image.png

以上操作会大大的降低高水位线

本文如有错误或不完善的地方请大家多多指正,请关注公众号:IT邦德
留言微信:jem_db 或 QQ:2243967774 皆可,您的批评指正是我写作的最大动力!
大家多多点赞,转发,谢谢

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论