| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3276 人关注过本帖
标题:[转载]Oracle数据库压缩探秘
只看楼主 加入收藏
简单的歌
Rank: 1
等 级:新手上路
帖 子:27
专家分:3
注 册:2008-12-26
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:18 
[转载]Oracle数据库压缩探秘
转载自王建博客:
http://blog.


前几天,我的一位朋友买了块1.5TB的硬盘。听说以后,我很感慨PC上用的单块硬盘能有这么大容量,因为我个人用过的第一台PC机长城0520才配了10MB硬盘,而十年前我接触过的最大的数据库系统也只有几百个GB。信息爆炸,加上存储技术的飞速发展,使得更多的信息被数字化地保存在硬盘及其他存储设备上。现在即使是几个TB的数据库也不值得炫耀了。


但是,即使当存储的每GB的单价已经变得很便宜了,我们还是需要使用压缩技术来提高存储效率。我的朋友买这块硬盘是用来存储高清电影的。每部高清电影大约需要20到30GB,但是这已经是压缩过的。很多高清电影的视频压缩比很高,可以达到100:1。这意味着,如果不压缩的话,一块1.5TB的硬盘可能只能放一部高清电影。


当然,视频压缩是允许有损失的,所以压缩比很高。如果压缩的是数据库的话,是不允许数据有任何损失的,所以压缩比会比这个低很多。Oracle数据库目前的压缩比能达到2:1到4:1,设想一下,如果一个数据库系统能节省一半的存储设备,能省下的钱还是很可观的。


数据库压缩带来的好处不只是节省存储空间和相应成本,同时还提高了I/O效率。因为数据库在读取数据的时候是读取压缩后的数据,所以大大节省了I/O的数量——例如,原来需要读2000个数据块,现在只需要读1000个。绝大部分情况下,减少I/O节省下来的时间要比在内存中解压缩数据所需的时间多,所以压缩可以提高读操作的性能。对于修改、插入和删除数据的操作,性能可能会略有下降,但是对于获得的好处来讲,还是很值得的。


数据库压缩的概念在Oracle9i第二版就已经引入,但是当时只对批量加载的数据,例如用SQL*Loader Direct load或者用Create table as select的,才能够压缩。但是对DML增删改操作的数据都不能压缩,所以大部分情况下并不是很实用。压缩功能的使用很简单,在创建表时加compress子句就可以。例如:
CREATE TABLE test (
a NUMBER
, b VARCHAR2(128)
, c VARCHAR2(256)
) COMPRESS;


在Oracle 11g中引入了Advanced Compression Option,使得对所有操作,包括DML都可以用压缩功能,新的语法如下:
CREATE TABLE test (
a NUMBER
, b VARCHAR2(128)
, c VARCHAR2(256)
) COMPRESS FOR ALL OPERATIONS;
为什么11g能做到对DML操作的数据也能压缩呢?秘密在于这种压缩方式是对数据块级的本地压缩,如下图所示





在压缩这个数据块的数据时,先会在数据块的header部分创建了一个符号表(Symbol Table),里面会包含那些重复值,例如’John’, ‘Doe’等等,这些值都有相应的Symbol。然后把数据块中的那些重复值的数据都用相应的Symbol替代,达到压缩的效果。当新的数据被插入时,其中在Symbol Table中有对应值的数据都会被Symbol替代。


需要注意的是,在11g中,如果只加COMPRESS,那么缺省的是9i引入的那种只对批量加载有效的压缩,等同于COMPRESS FOR DIRECT_LOAD OPERATIONS .


如果想预计压缩的效果,可以在SQL*Plus中执行
SQL>execute dbms_compression.getratio(ownername=>'SCOTT',tabname=>'TEST',sampling_percent=>10);
这个工具会在指定表中取样(本例中是10%),得到预计的压缩率。


数据库压缩对应用程序来说是完全透明的,应用并不需要知道所操作的表有没有做过压缩。所有压缩、解压都是由Oracle自动完成的。所以即使是Oracle EBS, Siebel, Peoplesoft, SAP应用也都可以享受数据库压缩的好处。


Data Pump, RMAN也都能用到压缩,可以大大减少导数据或者备份的时间窗口。Active Data Guard也可以利用压缩功能减低对带宽的要求。


Oracle近期即将发布11g第二版,据说Advanced Compression Option还有更强大的压缩功能推出,包括针对数据仓库的更高压缩比的方式。看来数据库压缩的新功能还是很值得期待的。


关于Oracle 的11g有很多新资料现在可以在官网下载,还有官方提供的试用软件,大家可以多到那里看看:http://
搜索更多相关主题的帖子: Oracle 
2009-08-24 10:55
面包龙龙
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2008-10-13
收藏
得分:0 
还以为是先解压的呢~ 原来数据库在读取数据的时候是读取压缩后的数据哦  学习了

(*^__^*) 嘻嘻……
2009-08-24 14:13
凋落的美景
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2008-10-13
收藏
得分:0 
果真可以在边open的情况下, 边recovery了?

爱死了前天...
2009-08-24 14:27
骷髅党3
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2009-1-2
收藏
得分:0 
很好,Oracle数据库11g最具创新性,质量也最高。
2009-08-24 15:53
狂人狗狗
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2009-1-2
收藏
得分:0 
真是好资料
2009-08-24 16:10
fatimid
Rank: 1
等 级:新手上路
帖 子:13
专家分:2
注 册:2008-12-30
收藏
得分:0 
Oracle Database 11g高级压缩特性可以帮助客户减少管理大量数据的资源和成本,它提供了一个自动化的压缩功能使得IT管理者可以快速解决这些问题。
2009-08-24 20:21
amuson
Rank: 1
等 级:新手上路
帖 子:10
专家分:2
注 册:2008-12-11
收藏
得分:0 
数据库压缩很多时候都不太理想
压缩比小不是少还容易丢失数据
还真是个问题
2009-08-24 21:06
情缘伊文
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-11-18
收藏
得分:0 
看来极新的数据划分和压缩功能的出现使得oracle 11g更加令人着迷了
2009-08-24 22:35
逢时风采
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2009-1-8
收藏
得分:0 
Oracle 11g啊 这里增强的自管理和自动化功能,还有这些新功能的组件 我很喜欢 对于我操作起来更加轻松了
2009-08-25 15:14
abbasid
Rank: 1
等 级:新手上路
帖 子:9
专家分:2
注 册:2008-12-30
收藏
得分:0 
都挺实用的
受教了
2009-08-25 20:44
快速回复:[转载]Oracle数据库压缩探秘
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023467 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved