Oracle11g新特性之:数据压缩技术

Oracle11g新特性之:数据压缩技术,第1张

随着数据量的不断海量 CPU的不断强劲 双核四核的叫个不停 一种叫做时间换空间的优化技术应该会越来越流行 所以 数据压缩对于今后的数据库来说 应该会从核武器变成常规武器 Oracle从 i开始羞羞答答的引入表级压缩 一直以来都是像中国的核电站一样 宣传的用处大 论实际的贡献就不怎么样了

Oracle g似乎是正儿八经的要推广数据压缩技术了 专门推出了一个叫做Advance Compression的组件 全面支持普通表压缩 非结构化数据压缩(SecureFile数据压缩) Data Pump数据压缩 以及RMAN备份压缩 数据压缩技术从此名正言顺的登上历史舞台 既然是专门做为一个Option推出 Oracle一定是对该特性相当有信心 所以需要单独为该特性购买License

在Oracle i中虽然引入了表压缩 但是有很大的限制 只能对批量装载 *** 作(比如直接路径装载 CTAS等)涉及的数据进行压缩 普通的DML *** 作的数据是无法压缩的 这应该是对于写 *** 作的压缩难题没有解决 一直遗留到Oracle g 总算是解决了关系数据压缩的写性能问题 Oracle的表压缩是针对Block级别的数据压缩 主要技术和Oracle i差不多 还是在Block中引入symbol表 将block中的重复数据在symbol中用一个项表示 Oracle会对block进行批量压缩 而不是每次在block中写入数据时都进行压缩 通过这种方式 可以尽量降低数据压缩对于DML *** 作的性能影响 这样 在block级别应该和游会引入一个新的参数 用于控制block中未压缩的数据量达到某个标准以后进行压缩 *** 作

SecureFile也是Oracle g新推出的一项特性 用于存储非结构化数据 SecureFile也将支持数据压缩 *** 作 这样对于传统的LOB字段也可以进行压缩 将极大的减少大型数据库的存储空间需求 当然 有得比有失 压缩和解压时 对于CPU的要求也将更高 但是 目前CPU的发展速度明显比IO和存储空间快速的情况下 压缩是大有可为的技术 通过在压缩率和压缩效率方面的不断提升 以后应该为成为各个数据库的标准配置

除了对数据库中的数据进行压缩 Advance Compression Option还将支持备份数据的压缩 做为逻辑备份的Data Pump和物理备份的RMAN工具 都将支持该技术 在Oracle gR 中 Data Pump已经开始支持压缩源数据 Oracle g中则可以直接压缩导出文件 这样导出的时候就可以极大的减少存储空间的需求 在以前版本中 利用WinRAR等 经常可以将几个G的导出文件压缩到几十M Oracle g的白皮书上说压缩率可以达到 % 等软件出来 大家可以好好的测试一把 同样的 Oracle也在 g中开始引入RMAN的压缩技术 但是Oracle g号称采用了更先进的ZLIB要所算法 可以比Oracle g的压缩唤胡销算法快上 % 空间需求也将减少 %

除了上述的数据压缩技术 Oracle g Advanced Compression Option还将引入另外一种压缩技术 我们知道在Data Guard中 需要将日志从主库传递到备库 如果主库的事务很多 则单位时间内需要传递的日志量将相当可观 如果能将这些日志压缩后在传递 然后在备库解压后应用 将极大的减少对于网络带宽的需求 从而已减少主备库的时间差

另外 Oracle的bitmap一直就是压缩存储的 g中的bitmap对于 i就有比较大的改动 通过一些细节的完善 提供更好的性能和更做肆高的稳定性 也是oracle一贯的风格 对于bitmap在Oracle g中将如何实现 也将是非常值得关注的一个特点

lishixinzhi/Article/program/Oracle/201311/16929

从Oracle iR 开始 ORACLE提供了表/表空间压缩技术 以减少磁盘开销 节省空间 并在某些情况下提高查询性能

表压缩是如何工作的在Orcle i第 版中 表压缩特性通过删除在数据库表中发现的重复数据值来节省空间 压缩是在数据库的数据块级别上进行的 当确定一个表要被压缩后 数据库便在每一个数据库数据块中保留空间 以便储存在该数据块中的多个位置上出现的数据的单一拷贝 这一被保留的空间被称作符号表(symbol table) 被标识为要进行压缩的数据只存储在该符号表中 而不是在数据库行本身内 当在一个数据库行中出现被标识为要压缩的数据时 该行在该符号表中敬薯存储一个指向相关数据的指针 而不是数据本身 节约空间是通过删除表中数据值的冗余拷贝而实现的

表级别 创建一个压缩表 创建表时使用PRESS关键字 PRESS关键字指示Oracle数据库尽可能以压缩的格式存储该表中的行

create table test press as select * from dba_objects where = create table test (id number name varchar ( ) time date) press 修改现有表为压缩表 SQL>alter table test press 取消表的压缩 SQL>alter table test nopress 确定表是否被压缩 确定一个表是否使用了压缩 查询user_tables pression字段表明表是否被压缩

表空间级别 创建表压缩空间create tablespace TEST datafile /export/home/oracle/ora g/oradata/test/test dbf size M default press 与其他存储参数类似 PRESS属性也具有一些继承特性 当在一个表空间中创建一个表时 它从该表空间继承PRESS属性

塌稿返 使现有表空间转换为压缩表空间SQL>alter tablespace test default press SQL>alter tablespace test default nopress 确定是否已经利用press对一个表空间进行了定义 可查询user_tablespaces数据字典视图并查看def_tab_pression列SQL>select tablespace_name def_tab_pression from user_tablespaces

压缩一个已经存在但并没有压缩的表使用alter table …… move press使一个已存在但未压缩的表转换为压缩表

SQL>alter table test move press 同样 也可以使用alter table…… move nopress来解压一个已经压缩的表 SQL>alter table test move nopress 压缩表的性能开销一个压缩的表可以存储在更少的数据块中 从而节省了储团饥存空间 而使用更少的数据块也意味着性能的提高 在一个I/O受到一定限制的环境中对一个压缩的表进行查询通常可以更快速地完成 因为他们需要阅读的数据库数据块要少得多

由此可以看出 向压缩表中加入数据的时间是正常表的 倍多 加载压缩的表所需要的额外时间来自于在数据加载过程中所执行的压缩 *** 作

lishixinzhi/Article/program/Oracle/201311/17071

转换为分区表后再变成普通表。

根据博客园查询显示,oracle压缩表需要先批量改成分区表闭激,其中测试环境中的一些分区表都需要去掉分区,转换成普通表轿坦袜的形式。

在Oracle数据库中,普通表(即堆表信迅)可以进行压缩技术来提高数据库性能和节省存储空间。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8184952.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存