>데이터 베이스 >MySQL 튜토리얼 > 关于Oracle表碎片整理

关于Oracle表碎片整理

WBOY
WBOY원래의
2016-06-07 17:41:43970검색

数据库在日常使用过程中,不断的insert,delete,update操作,导致表和索引出现碎片是在所难免的事情,碎片多了,sql的执行效率自然就差了,道理很简单,高水位

数据库在日常使用过程中,不断的insert,delete,update操作,导致表和索引出现碎片是在所难免的事情,碎片多了,sql的执行效率自然就差了,香港虚拟主机,道理很简单,高水位线(HWL)下的许多数据块都是无数据的,但全表扫描的时候要扫描到高水位线的数据块,也就是说oracle要做许多的无用功!因此oracle提供了shrink space碎片整理功能。对于索引,可以采取rebuild online的方式进行碎片整理,一般来说,经常进行DML操作的对象DBA要定期进行维护,同时注意要及时更新统计信息!

一:准备测试数据,免备案空间,香港虚拟主机,使用HR用户,创建T1表,插入约30W的数据,并根据object_id创建普通索引,表占存储空间34M左右,索引占6M左右的存储空间 

 

二:估算表在高水位线下还有多少空间可用,这个值应当越低越好,表使用率越接近高水位线,全表扫描所做的无用功也就越少!

DBMS_STATS包无法获取EMPTY_BLOCKS统计信息,所以需要用analyze命令再收集一次统计信息

三: 查看执行计划,全表扫描大概需要消耗CPU 1175

四:删除大部分数据,收集统计信息,全表扫描依然需要消耗CPU 1168

五:估算表在高水位线下还有多少空间是无数据的,但在全表扫描时又需要做无用功的数据

六:对表进行碎片整理,重新收集统计信息

参考:

关于如何确定哪些表需要进行碎片整理,可以使用附件中的脚本去查询,具体请参考:

本文出自 “斩月” 博客,谢绝转载!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.