攻略1-22 在列级压缩数据

问题描述

你在使用Oracle的Exadata产品,并且想要有效地压缩数据。你已经确定对数据进行压缩将会具有更高效的I/O性能,尤其是在从磁盘中读取数据时。这里的思想是压缩后的数据将会大大减少SELECT语句需要读取的数据块数。

解决方案

要想启用列式压缩(Oracle将这一特性称为混合列式压缩),在创建表时使用COLUMN STORE COMPRESS FOR QUERY或COLUMN STORE COMPRESS FOR ARCHIVE子句,例如:

enter image description here enter image description here

工作原理

Exadata是Oracle的高性能数据库服务器。它的设计宗旨就是为数据仓库和OLTP数据库提供高性能。Exadata存储支持混合列式压缩,从Oracle Database 11g R2版本起可用。

注意 在Oracle Database 11g R2中,列压缩通过COMPRESS FOR QUERY子句来启用,从Oracle Database 12c开始,修改为COLUMN STORE COMPRESS FOR QUERY。

混合列式压缩逐列对数据进行压缩。列级压缩将会比Oracle基本压缩(参见攻略1-15)或高级压缩(参见攻略1-16)得到更高的压缩比。混合列级压缩有四个级别。这些级别按压缩水平由低到高如下所列:

 COLUMN STORE COMPRESS FOR QUERY LOW 
 COLUMN STORE COMPRESS FOR QUERY HIGH 
 COLUMN STORE COMPRESS FOR ARCHIVE LOW 
 COLUMN STORE COMPRESS FOR ARCHIVE HIGH 
COLUMN STORE COMPRESS FOR QUERY适用于对不经常更新的堆组织表进行大批量加载操作。这种类型压缩的查询性能是最佳的,因此更适用于DSS和数据仓库数据库。而COLUMN STORE COMPRESS FOR ARCHIVE则进行最大程度的压缩,更适合于长期存放并且不会更新的数据。

注意 关于混合列级压缩的更多信息,请参考Oracle Exadata Storage Server Software文档。

目录