ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 索引组织表及nocompress和compress n

索引组织表及nocompress和compress n

原创 Linux操作系统 作者:Jack_Miller 时间:2012-03-09 20:37:40 0 删除 编辑
  • 创建索引组织表:

create table iot
(owner,object_type,object_name,primary key(owner,object_type,object_name) )
organization index
as select owner,object_type,object_name from all_objects

  • 查看索引组织表的详细参数:
select dbms_metadata.get_ddl('TABLE','IOT') from dual;

DBMS_METADATA.GET_DDL('TABLE','IOT')
--------------------------------------------------------------------------------

  CREATE TABLE "SCOTT"."IOT"
   (    "OWNER" VARCHAR2(30) NOT NULL ENABLE,
        "OBJECT_TYPE" VARCHAR2(19),
        "OBJECT_NAME" VARCHAR2(30) NOT NULL ENABLE,
         PRIMARY KEY ("OWNER", "OBJECT_TYPE", "OBJECT_NAME") ENABLE
   ) ORGANIZATION INDEX NOCOMPRESS PCTFREE 10 INITRANS 2 MAXTRANS 255 LOGGING
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
  TABLESPACE "USERS"
 PCTTHRESHOLD 50

可以看到索引组织表比普通表多了两个参数 NOCOMPRESS  和 PCTTHRESHOLD。
NOCOMPRESS对一般索引都可用,它告诉Oracle把每个主键值都分别存储在各个索引条目中,例如,A、B、C是主键,则A、B、C每一次都会出现在索引条目中。因为索引组织表中索引即数据,数据即索引,也就是每个主键值都分别存储在每一行中(这在堆组织表中理所当然)。但索引组织表还提供了COMPRESS N,N是一个整数,表示要压缩的主键的列数。如果N=2,则在索引条目中A、B只会出现一次,这样避免重复值,并在块级提取公因子。


  • 测量该索引组织表所用的空间:使用analyze index validate structure命令。这个命令会填写一个名为index_stats的动态性能视图。
通过user_indexes视图获得iot表的索引(索引即数据,数据即索引)
select index_name from user_indexes where table_name='IOT';

INDEX_NAME
------------------------------
SYS_IOT_TOP_52632

analyze index SYS_IOT_TOP_52632 validate structure;
查询index_stats视图
select lf_blks,br_blks,used_space,opt_cmpr_count,opt_cmpr_pctsave from index_stats;

   LF_BLKS    BR_BLKS USED_SPACE OPT_CMPR_COUNT OPT_CMPR_PCTSAVE
---------- ---------- ---------- -------------- ----------------
       253          1    1812016              2               33
结果显示,索引使用了253个叶子块和1个分支块,大约1.8MB的空间。后两列是说:如果把这个索引置为COMPRESS 2,就会得到最佳压缩,节约33%的空间。

  • 修改COMPRESS
alter table iot move compress 1;

analyze index SYS_IOT_TOP_52632 validate structure;
select lf_blks,br_blks,used_space,opt_cmpr_count,opt_cmpr_pctsave from index_stats;

   LF_BLKS    BR_BLKS USED_SPACE OPT_CMPR_COUNT OPT_CMPR_PCTSAVE
---------- ---------- ---------- -------------- ----------------
       221          1    1582838              2               23


alter table iot move compress 2;

analyze index SYS_IOT_TOP_52632 validate structure;
select lf_blks,br_blks,used_space,opt_cmpr_count,opt_cmpr_pctsave from index_stats;

   LF_BLKS    BR_BLKS USED_SPACE OPT_CMPR_COUNT OPT_CMPR_PCTSAVE
---------- ---------- ---------- -------------- ----------------
       169          1    1212175              2                0

可以看到不论叶子块还是空间大小都显著减少了。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25791987/viewspace-718205/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 段空间管理
下一篇: 索引聚簇表
请登录后发表评论 登录
全部评论

注册时间:2011-12-09

  • 博文量
    25
  • 访问量
    70220