- 创建索引组织表:
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
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/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/25791987/viewspace-718205/