您的位置:首页 > 数据库 > Oracle

Oracle相关压缩技术

2017-02-20 16:08 405 查看
技术点小贴士

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操作。欲在线进行压缩算法变更操作,则需要采用在线重定义技术。

查询压缩记录

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: