Oracle学习笔记:索引组织表的COMPRESS选项的测试

1 索引组织表(index organized table,IOT)
就是存储在一个索引结构中的表。存储在堆中的表是无组织的(也就是说,只要有可用的空间,数据可以放在任何地方),IOT 中的数据则按主键存储和排序。对你的应用来说,IOT 表现得与一个“常规”表并无二致;还是要使用SQL 正常地访问这些表。IOT 对信息获取、空间应用和OLAP 应用特别有用。

2 我们先看看不压缩的表(NOCOMPRESS)

SQL> create table iot
2 ( owner, object_type, object_name,
3 constraint iot_pk primary key(owner,object_type,object_name)
4 )
5 organization index
6 NOCOMPRESS
7 as
8 select distinct owner, object_type, object_name
9 from all_objects;

表已创建。

已用时间: 00: 00: 01.89
SQL> desc iot;
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------

OWNER NOT NULL VARCHAR2(30)
OBJECT_TYPE NOT NULL VARCHAR2(19)
OBJECT_NAME NOT NULL VARCHAR2(30)


3 分析索引
SQL> analyze index iot_pk validate structure;

索引已分析

已用时间: 00: 00: 00.12

4 查看分析结果
SQL> select lf_blks,br_blks,used_space,opt_cmpr_count,opt_cmpr_pctsave from inde
x_stats;

LF_BLKS BR_BLKS USED_SPACE OPT_CMPR_COUNT OPT_CMPR_PCTSAVE
---------- ---------- ---------- -------------- ----------------
252 1 1811984 2 33

已用时间: 00: 00: 00.04

LF_BLKS 是:叶子块(即数据所在的块)
BR_BLKS 是分支块(Oracle在索引结构中导航所用的块)
SED_SPACE 占用的空间,大约1.7M
后面2个是建议的压缩数和估计的压缩效果


5 我们先设置压缩数为1
SQL> alter table iot move compress 1;

表已更改。

已用时间: 00: 00: 00.17

6 再次分析
SQL> analyze index iot_pk validate structure;

索引已分析

已用时间: 00: 00: 00.29

7 查看压缩后的效果
SQL> select lf_blks,br_blks,used_space,opt_cmpr_count,opt_cmpr_pctsave from inde
x_stats;

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

已用时间: 00: 00: 00.00

叶子块和占用的磁盘空间大幅减少

8 再次压缩数设置为2
SQL> alter table iot move compress 2;

表已更改。

已用时间: 00: 00: 00.09

9 再次分析
SQL> analyze index iot_pk validate structure;

索引已分析

已用时间: 00: 00: 00.09

10 查看压缩数为2的结果
SQL> select lf_blks,br_blks,used_space,opt_cmpr_count,opt_cmpr_pctsave from inde
x_stats;

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

已用时间: 00: 00: 00.00

和系统推荐的一样,这个是最优的压缩数,占用最少的块和磁盘空间。
SQL>


你可能感兴趣的:(oracle,sql,object,table,null,structure)