Oracle高水位线 HWM降低技巧
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle高水位线 HWM降低技巧相关的知识,希望对你有一定的参考价值。
作者:IT邦德
中国DBA联盟(ACDU)成员,目前从事DBA及程序编程
(Web\\java\\Python)工作,主要服务于生产制造
现拥有 Oracle 11g OCP/OCM、
mysql、Oceanbase(OBCA)认证
分布式TBase\\TDSQL数据库、国产达梦数据库以及红帽子认证
从业8年DBA工作,在数据库领域有丰富的经验
详情关注公众号:IT邦德
前言
什么是高水位线? 高水位线(high-water mark,HWM) 在数据库中,如果把表想象成从左到右依次排开的一系列块, 高水位线就是曾经包含了数据 的最右边的块。
1.概览
HWM 有利有弊,原则上 HWM 只会增大,即使将表中的数据全部删除,HWM 也不会降低。
优点:可以使 HWM 以下的块重复利用
缺点:使用全表扫描时要读取 HWM 以下的所有 block,耗费更多的 IO 资源。
2.如何降低 HWM 高水位线
多种方法可以降低 HWM:
移动表
收缩表
导入导出表
在线重定义表
3.收缩表 shrink
Shrink 方法,也叫段重组,表收缩的底层实现的是通过匹配的 INSERT 和 DELETE 操作
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
SYS@PROD> delete from scott.t3 where rownum<4000;
analyze table scott.t3 compute statistics;
num_rows 已经减掉了 4000
开启行迁移
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;
本文如有错误或不完善的地方请大家多多指正,请关注公众号:IT邦德
以上是关于Oracle高水位线 HWM降低技巧的主要内容,如果未能解决你的问题,请参考以下文章