重庆思庄Oracle、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2884|回复: 0
打印 上一主题 下一主题

[转载] oracle压缩索引

[复制链接]
跳转到指定楼层
楼主
发表于 2017-1-19 11:21:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

今天看了简单的了解了一下压缩索引,写写,为了以后更好的学习,当然肯定写的不是很全面,还得继续努力了
压缩索引顾名思义就是对索引进行压缩,对组合索引,特别是重复率高的进行压缩,那么它能带来什么好处呢?首先它占用的磁盘空间少,其次了缓冲区就可以存放更多的索引条目了,而且缓冲命中率较高,并且物理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语句也是不适合的。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2024-4-26 03:26 , Processed in 0.100475 second(s), 20 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表