Oracle相关压缩技术

时间:2021-01-29 07:39:33

技术点小贴士

1.压缩表不支持在线shrink操作。

2.表压缩技术不适合于11g的新大对象技术SecureFiles。因为SecureFiles采用自己的压缩技术

3.当表采用BASIC压缩算法后,表的PCTFREE菜蔬自动设置为0

4.使用COMPRESS FOR OLTP或COMPRESS BASIC 方式,表的字段数量不能超过255个。虽然可以设置成功,但数据实际上是没有压缩的。

5.IOT表不可以压缩。


压缩技术分类

1.Basic Compression适用于数据仓库

2.OLTP Compression既适合交易系统也适合数据仓库

3.Warehouse Compression (Hybrid Columnar Compression)采用11g新混合列压缩技术,适合于数据仓库

4.Online Archival Compression(Hybrid Columnar Compression)采用11g新混合列压缩技术,与Warehouse Compression不同的是,其压缩比最高,但CPU开销最大,甚至影响查询操作,因此适用于数据访问很少的数据归档系统。


创建压缩表

1.普通压缩表

CREATE TABLE sales_history ... COMPRESS;

如下语句通过Direct-Path INSERT操作,向sales_history表以压缩形式写数据

Insert /*+APPEND */ into sales_history select * from sales where cust_id=8890;

commit;


2.创建OLTP压缩表

Create Table orders ... Compress For OLTP;

以下语句第一个分区设计为普通压缩,第二个分区设计为OLTP压缩分区,第三个为非压缩的。

Create Table(

object_id number(10),

object_name varchar2(120)

)

PARTITION BY RANGE (object_id)(

PARTITION p1 VALUES LESS THAN (100000) COMPRESS BASIC,

PARTITION p2 VALUES LESS THAN (200000) COMPRESS FOR  OLTP,

PARTITION p3 VALUES LESS THAN (maxvalue) NOCOMPRESS

)


3.创建Warehouse Compression或者Warehouse Compresssion压缩表

Create table sales_history ... COMPRESS FOR QUERY;

Create table sales_history ... COMPRESS FOR ARCHIVE;


修改压缩表

1.将表转换为BASIC压缩表

alter table emp move Compress basic;

2.将表转换为OLTP压缩表

alter table emp move compress  for oltp;

3.将一个分区转换为Basic压缩分区

alter table part_objects move partition p3 compress basic;

以下语句修改一个分区的现有的压缩算法,但更改之后的压缩算法只对新纪录有效,而不影响原有记录

alter table part_objects modify  partition p1 compress for oltp;


PS:上述move和modify操作均非在线操作,即进行这些操作时这些表不可进行DML操作。欲在线进行压缩算法变更操作,则需要采用在线重定义技术。


查询压缩记录

Oracle相关压缩技术