列级压缩数据(混合列式压缩)

问题描述:oracle的exadata存储支持混合列式压缩,能够提高io性能,减少select读取的块数

解决方案:创建表时通过compress for query或compress for archive子句
create table f_regs(reg_id number,reg_desc varchar2(1000)) compress for query;
也可以指定压缩级别
create table f_regs(reg_id number,reg_desc varchar2(1000)) compress for query high;

query的压缩级别默认是high,archive的压缩级别默认是low
select table_name,compression,compress_for from user_tables;

如果在exadata之外的环境使用混合列式压缩会报错:
SQL> create table f_regs(reg_id number,reg_desc varchar2(1000)) compress for query;
create table f_regs(reg_id number,reg_desc varchar2(1000)) compress for query
*
ERROR at line 1:
ORA-64307: 只有位于 Exadata 存储上的表空间才支持混合柱状压缩

工作原理:
exadata是oracle的高性能数据库服务器,从11gr2开始支持混合列式压缩,有四个级别,其压缩水平从低到高为:
comperss for query low
comperss for query high
compress for archive low
compress for archive high

compress for query适用于不经常更新的堆组织表,这种压缩查询性能最佳,更适用于sdd和数据仓库
compress for archive有最大程度的压缩比,适用于长期保存并且不会更新的数据

你可能感兴趣的:(oracle,11g性能优化攻略笔记)