oracle压缩索引

今天看了简单的了解了一下压缩索引,写写,为了以后更好的学习,当然肯定写的不是很全面,还得继续努力了

压缩索引顾名思义就是对索引进行压缩,对组合索引,特别是重复率高的进行压缩,那么它能带来什么好处呢?首先它占用的磁盘空间少,其次了缓冲区就可以存放更多的索引条目了,而且缓冲命中率较高,并且物理I/O 较少。也就是可以使用更少的叶块,但是同样也有缺点的,不正确的压缩会带来很大的麻烦,它需要更多的从cpu进行处理,那么压缩索引到底能不能提高性能呢?这得实际中进行实验,下面简单用举例来说明压缩引的一些相关知识。

实验步骤

1.我们先用oracle中自带的表来实验,all_object,创建表,创建索引,然后把重复率高的放在索引的最前面

create table t
as
select * from all_objects;
create index t_idx on t(owner,object_type,object_name);


2.对索引进行分析,可以看索引的一些压缩的比率以及压缩的一些空间等信息。我们分别对上面的索引进行无压缩的,压缩一列,压缩两列,压缩3列来进行分析。

 

create table idx_stats
as
select 'noncompressed' what, a.*
from index_stats a;

我们把未压缩的放在idx_stats 表中,然后我们分别把其它压缩的三种都放在idx_stats中进行比较

压缩一列
drop index t_idx;
create index t_idx on
t(owner,object_type,object_name)
compress 1;
analyze index t_idx validate structure;
insert into idx_stats
select 'compress 1', a.*
from index_stats a;
压缩两列
drop index t_idx;
create index t_idx on
t(owner,object_type,object_name)
compress 2;
analyze index t_idx validate structure;
insert into idx_stats
select 'compress 2', a.*
from index_stats a;
压缩三列
drop index t_idx;
create index t_idx on
t(owner,object_type,object_name)
compress 3;
analyze index t_idx validate structure;
insert into idx_stats
select 'compress 3', a.*
from index_stats a;

3.我们来进行对比一下进行分析

我们来分析一些,height 是索引的高度,biree_space 是索引的大小,opt_cmpr_count 是索引评估的最佳压缩行,本例中是两行,opt_cmpr_pctsave 是索引可以节约的空间,如在本例中压缩两列可以节约28%的空间,2800096*28%。

从本例中可以看出压缩最佳行两行以后,就再不能节约空间了,并且索引的高度也变为了2,这是因为通过压缩,数据量减少,就可以放在单个的块上,所以高度也就减少了,就这就大大的减少了I/O 读,但是压缩了3行以后,反而占的空间大了,这是索引的压缩机制造成了。所以在压缩时要注意,一般情况下,压缩索引还是适合静态的环境,如数据仓库,如果有大量的DML语句也是不适合的。

转载于:https://www.cnblogs.com/wujin/archive/2012/03/29/2424196.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值