xzh2000的博客 本人提供杭州地区Oracle现场技术支持服务,包括性能调整、DataGuard、RAC等。
06 11, 2006
如何计算index的compress?
作者 xzh2000 15:04 | Permalink 静态链接网址 | Comments 最新回复 (1) | Trackback 引用 (0) | 技术交流

在创建组合索引时,通常会把选择性好的列作为前导列,但在创建带compress选项的组合索引时,恰恰相反,最好把选择性最差的列作前导列,这样创建出来的索引,更能节省存储空间,但compress选项如何取值呢?请看下面的测试:


--测试场景:
create table tmp_objects
as
select * from all_objects;
--创建索引
create index idx_objects_objid1 on tmp_objects(object_id,object_type,owner);
create index idx_objects_objid2 on tmp_objects(owner,object_type,object_id);
--分析索引
SQL> analyze index idx_objects_objid1 validate structure;
SQL> select name,lf_blks,opt_cmpr_count,opt_cmpr_pctsave from index_stats;
NAME LF_BLKS OPT_CMPR_COUNT OPT_CMPR_PCTSAVE
------------------------------ ---------- -------------- ----------------
IDX_OBJECTS_OBJID1 111 0 0

SQL> analyze index idx_objects_objid2 validate structure;
SQL> select name,lf_blks,opt_cmpr_count,opt_cmpr_pctsave from index_stats;
NAME LF_BLKS OPT_CMPR_COUNT OPT_CMPR_PCTSAVE
------------------------------ ---------- -------------- ----------------
IDX_OBJECTS_OBJID2 111 2 46

--压缩索引
SQL> alter index idx_objects_objid2 rebuild compress 2;
SQL> analyze index idx_objects_objid2 validate structure;
SQL> select name,lf_blks,opt_cmpr_count,opt_cmpr_pctsave from index_stats;
NAME LF_BLKS OPT_CMPR_COUNT OPT_CMPR_PCTSAVE
------------------------------ ---------- -------------- ----------------
IDX_OBJECTS_OBJID2 60 2 0

--测试说明
在index_stats字典中的opt_cmpr_count字段是analyze index ... validate structure推荐的compress取值,opt_cmpr_pctsave就是评估可以节省的百分比,比如idx_objects_objid2的opt_cmpr_pctsave是46,表示如果按compress 2进行压缩索引,那索引就可以少节省46%的空间,索引压缩后lf_blks是60个块,实际上通过压缩,共节省了51个块(111-60)...

Comments

好勤劳呀,学习

作者 日月明王 09 11 2006, 15:41
博客日历
« 八月 2008 »
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
搜索
最新发表
文章分类
文章归档
网站链接
新闻聚合