在Oracle数据库中,随着表数据的增长,我们可以考虑使用表压缩技术。
表压缩可以节省磁盘空间、减少data buffer cache的内存使用量、并可以显著的提升读取和查询的速度。
当使用压缩时,在数据导入和DML操作时,将导致更多的CPU开销,然而,由于启用压缩而减少的I/O需求将抵消CPU的开销而产生的成本。
表压缩的方法:
Oracle提供了一下几种类型的表压缩方法:
1、Basic Compression:压缩等级High,CPU开销较小
2、OLTP Compression:压缩等级High,CPU开销较小
3、Warehouse Compression:压缩等级Higher,CPU开销较大(取决于压缩参数是Low还是High,默认是HIGH)
4、Archive Compression:压缩等级Highest,CPU开销很大(取决于压缩参数是Low还是High,默认是LOW)
当使用Basic Compression,warehouse Compression,Archive Compression类型的压缩时,尽在发生批量数据导入时才会执行压缩。
OLTP Compression被用于联机事务处理系统,可以对任意的SQL操作执行数据压缩。
Warehouse Compression和Archive Compression可以获得很高的压缩等级,因为它们采用了Hybrid Columnar(混合列)压缩技术,Hybrid Columnar采用一种改良的列的存储形式替代一行为主的存储形式。Hybird Columnar技术允许将相同的数据存储在一起,提高了压缩算法的效率。当使用混合列压缩算法时,将导致更多的CPU开销,因此这种压缩技术适用于更新不频繁的数据。
之前未压缩的表可以通过alter table ... compression ... 语句进行压缩。在这种情况下,压缩启用前的记录不会被压缩,只有新插入或更新的数据才会进行压缩。同样,通过alter table ... nocompression ...语句解除对一个表的压缩,表内已压缩的数据还会继续保持压缩的状态,新插入的数据就不再被压缩。
表压缩语法:
CREATE TABLE table_name (column_defination...) COMPRESS FOR [OLTP]|[QUERY|ARCHIVE [LOW|HIGH]];
ALTER TABLE table_name COMPRESS FOR [OLTP]|[QUERY|ARCHIVE [LOW|HIGH]];
阅读(2288) | 评论(0) | 转发(1) |