ORACLE表压缩技术在CRM系统的使用
1. 普通表的压缩
Oracle 11g中表压缩
Oracle 9i开始引入表压缩技术,主要用于数据仓库项目节约存储空间,在11g中它已经成为一个主流特性,在OLTP数据库上的表现也让人非常满意了,除了节约存储空间外,压缩可导致I/O性能增强,减少缓冲区内存占用,使用这些优点是要付出代价的,因为压缩引起CPU开销较大,因此它不是在任何情况下都是有益 的。
压缩子句可以在表空间,表或分区一级使用下面的选项指定:
◆NOCOMPRESS - 表或分区不压缩,当没有具体指定压缩子句时这是默认行为。
◆COMPRESS - 这个选项被认为适合于数据仓库系统,只在直接路径插入过程中在表或分区上启用压缩。
◆COMPRESS FOR DIRECT_LOAD OPERATIONS - 这个选项与COMPRESS关键字有同样的影响。
◆COMPRESS FOR ALL OPERATIONS - 这些选项被认为适合于OLTP系统,如名字暗示的那样,这些选项为所有操作启用了压缩,包括普通的DML语句,这个选项需要COMPATIBLE初始化参数设置为11.1.0或更高(有一些使用上影响,一般不推荐)。
1.1语法举例
修改表空间默认压缩属性,使得其上建立的表都默认为compress:
alter tablespace TBS_DATA_GC default compress ;
alter tablespace TBS_DATA_GC default nocompress ;
建压缩表:
create table gg.t1 (....) compress ;
create table gg.t1 compress as select * from gg.t2 ;
修改普通表为压缩表:
alter table 表名 move compress ;
alter table 分区表名 move partition 分区名 compress;
1.2测试效果
使用历史库上prod_inst_his分区表做实验,步骤:
(1) 导出分区表结构,后面测试建立一样的表结构.
(2) alter tablespace TBS_CRM_GC default compress
(3) 建表语句create table ..... tablespace TBS_CRM_GC as select * from xxx
(4) 分别记录压缩与非压缩表的测试数据
操作 类型 | 空间消耗 | 创建时间 | count读取时间 |
非压缩表 | 115GB | 1698s | 168.172s |
压缩表 | 69GB | 1976s | 111.859s |
1.3总结
(1)压缩率:与表数据有关,CRM典型大表大约有50%-60%的压缩率,可以极大节约空间
(2)优势:节约大量空间,提高io效率
(3)适用:归档数据,备用数据,只读数据,批量append INSERT的数据
(4)成果:在CRM1.0数据查询库上完全使用,空间消耗由原始6TB降到3.6TB,效果明显.
(5)实践:建议在历史库上对历史归档数据启用表压缩,只需要在表空间属性上修改,并且重建表即可生效,无需修改现有脚本.
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9363164/viewspace-1356674/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/9363164/viewspace-1356674/