Oracle 12c 新特性(1)_Advanced Index Compression

时间:2021-06-19 21:47:27

Oracle 官网文档:

http://docs.oracle.com/database/121/NEWFT/chapter12102.htm#NEWFT003

1.1 Advanced Index Compression

高级索引压缩

从Oracle12c Rlease1(12.1.0.2),该特性可用。

高级索引压缩很好地支持索引,包括那些索引:对于候选集不是很好的已存在前缀压缩索引;在索引的列族头,没有或者少有重复值的索引。当提供有效的索引入口时,高级索引压缩明显提高压缩比率。


创建一个具有高级索引压缩的索引

创建一个具有使用高级索引压缩的索引,降低尺寸支持所有的唯一(unique)或者非唯一(non-unique)的索引。

对于分区索引,我们可以制定压缩类型在分区上基于分区基础。我们可以制定高级索引压缩在索引分区上,当父索引没有压缩时。

高级索引压缩在块(block)级别为每个块(block)提供最好的压缩。当CREATE INDEX  DDL语句被执行, 一个块(block)被填到行中。当它满的时候,他被以高级压缩索引的形式压缩,如果足够的空间被节省去插入下一行。 当DML 语句或者其他类型的DDL语句被执行, 一个块变满,它会被分割(split), 块(block)可能被压缩以高级索引压缩的方式去避免分割(split)如果足够的空间被节省去插入将来的键值(key)。

Oracle 12.1.0或者更高的兼容版本,才可以使用高级索引压缩(advanced index compression)。使用COMPRESS ADVANCED LOW 语句去使用高级索引压缩(enable advanced index compression)。如:

CREATE INDEX hr.emp_mndp_ix ON hr.employees(manager_id, department_id)
   COMPRESS ADVANCED LOW;

索引重建过程中,我们可以使用COMPRESS ADVANCED LOW语句。如:   

ALTER INDEX hr.emp_manager_ix REBUILD COMPRESS ADVANCED LOW;

The COMPRESSION column in the ALL_INDEXESALL_IND_PARTITIONS, and ALL_IND_SUBPARTITIONS views shows whether an index is compressed, and, if it is compressed, the type of compression enabled for the index.

备注:

1. Advanced index compression不支持位图索引(bitmap indexes)和索引组织表(index-organized tables[Data (including no-key values) is sorted an stored in a B-tree index structure.]).

2. Advanced index compression不能指定在具有单独列的唯一索引上。(单独列一列的唯一索引,不需要再压缩了。)