Chinaunix首页 | 论坛 | 博客
  • 博客访问: 266031
  • 博文数量: 34
  • 博客积分: 569
  • 博客等级: 中士
  • 技术积分: 380
  • 用 户 组: 普通用户
  • 注册时间: 2012-05-10 14:10
文章分类

全部博文(34)

文章存档

2016年(6)

2014年(1)

2013年(5)

2012年(22)

我的朋友

分类: Oracle

2016-06-20 11:39:56

原文地址:Oracle表压缩技术 作者:我忒忙

在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]];
阅读(1279) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~