首页 > 范文大全 > 正文

大数据时代的Oracle数据压缩技术应用

开篇:润墨网以专业的文秘视角,为您筛选了一篇大数据时代的Oracle数据压缩技术应用范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘 要:大数据时代对人类对海量数据的驾驭能力提出前所未有的挑战。本文介绍的是oracle数据压缩技术,这是ORACLE数据库在大数据环境下极为实用的一个属性,不仅降低了所有数据类型的磁盘空间需求,还提高了应用程序性能,增强了内存和网络效率。

关键词:大数据 ORACLE 压缩技术

中图分类号:TP3 文献标识码:A 文章编号:1671-7597(2013)11-0000-00

近两年来,大数据(big data)概念越来越引人瞩目,它被用来描述和定义在当前信息爆炸时代所产生的海量数据和与其相关的技术发展与创新。大数据时代对人类对海量数据的驾驭能力提出前所未有的挑战。如何管理这些迅速膨胀的海量数据,也成为每个数据库厂商必须面对的问题。本文介绍的是ORACLE的表/表空间压缩技术,这是ORACLE数据库在大数据环境下极为实用的一个属性。随着企业数据的爆炸性增长,很多决策支持系统和数据仓库对磁盘空间的需求也在急剧增长。目前很多大中型企业里,TB级甚至PB级的数据仓库已经越来越普遍。Oracle从9iR2 开始,提供一种表/表空间压缩技术,用以减少磁盘开销,节约存储空间,并在某些情况下获得查询性能的提高。

1 Oracle的压缩技术

Oracle的压缩技术实际上从8i就出现了,提供简单的索引压缩;到9ir2时,可以进行表级别的压缩,但只能对批量装载操作(比如直接路径装载,CTAS等)涉及的数据进行压缩,普通的DML操作的数据则无法压缩。Oracle 10g增加了对LOB的压缩,但并未解决压缩的写操作问题;从Oracle 11g开始,使用了"基于数据块的批次压缩技术",也就是说数据的压缩并不在执行DML语句时即时发生,当一个数据块开始写入数据时,插入的数据并不被立即压缩,这个时候对性能是没有影响的,对数据块的压缩动作发生在数据块即将被写满时,这样可以保证大部分DML语句的效率,从而真正支持了各种DML语句也能够用于OLTP环境(insert,update等)。

2 常用的压缩命令

下面列举一些常用的压缩命令。

2.1 表级别的使用

可以在建表时指定压缩属性,也可修改已有表的压缩属性。

create table tab1 compress as select * from user_tables;

create table tab2(cust_idnumber,cust_name varchar2(200))compress;

alter table tab3 move compress;-- 修改现有表为压缩表

alter table tab3 move nocompress;-- 解压已经压缩的表

如果要对分区表的不同分区设置压缩属性,我们可以在创建分区表时设置,也可等到需要对某个分区进行压缩时再设置。

Create table test(cust_id number,cust_name varchar2(200)) partition by range(cust_id)

partition P1 values less than (10000) compress,

partition P2 values less than (20000) compress,

partition PMAX values less than (maxvalue) );--

该命令表示P1和P2为压缩属性,PMAX则没有设置压缩属性。

Alter table test modify partition PMAX compress;--

该命令表示将PMAX分区设置为压缩属性。

2.2 表空间级别的使用

可以在建表空间时指定压缩属性,也可将现有表空间转换为压缩表空间。和其他存储参数一样,COMPRESS属性也具备一些继承特性。当在一个COMPRESS属性的表空间中创建一个新表时,这个新表从该表空间继承COMPRESS属性。需要注意的是,该属性只针对在该表空间建立的表,通过"alter table tab1 move tablespace test"方式移到该表空间的普通表和在该表空间用默认方式建立的索引,都不具备压缩属性。

create tablespace ETL datafile '/oracle/data03/oradata/stkhxf/test01.dbf' SIZE 500M default compress;--创建表压缩空间

alter tablespace ETL default compress;-- 将非压缩表空间转换为压缩表空间

alter tablespace ETL default nocompress;--取消表空间的压缩

2.3 索引的使用

除了表可以压缩之外,索引也同样可以压缩,当索引键值的重复率很高时,可以考虑压缩索引。注意,如果是主键索引或惟一约束索引,则无需压缩。

我们可以在建索引时进行指定:create index IDX_1 on tset(cust_id)compress.

也可以将现有索引转换为压缩属性:alter index IDX_2 rebuild compress.

2.4 通过数据字典查看对象是否被压缩

select owner,table_name,compression from dba_tables ;--查看表

select table_owner,table_name,partition_name,compression from dba_tab_partitions; --查看分区表

select owner,tablespace_name,def_tab_compression from dba_tablespaces;--查看表空间

select owner,index_name,compression from dba_indexes; --查看索引

大部分情况下,使用压缩技术对数据库性能提升是有利的。Orecle采用智能算法的压缩技术尽量降低写操作的负载,被压缩的数据可以存贮在更少的数据块中,这样就降低了磁盘空间使用。对一个压缩属性的表或索引的全表扫描和索引区间扫描所需要读取的数据块更少,减少了磁盘IO,查询可以更快完成。其次,由于需要处理的数据块减少,CPU搜索和处理数据块的时间会降低,同时需要读入内存的数据块也减少了,内存的资源消耗也随之降低。再次,由于数据压缩和解压是Oracle内部的行为,外部网络可以仅传输被压缩的数据块,这样也有效降低了网络负载。

3 结束语

从Oracle11g开始,没有什么是不可压缩的。Oracle数据库提供的高级压缩技术可以压缩所有类型的数据--无论是规范的结构化数据(数字、字符)、非结构化数据(文档、电子表格、XML 和其他文件)还是备份数据。不仅降低了所有数据类型的磁盘空间需求,还提高了应用程序性能,增强了内存和网络效率。在这个大数据时代,对使用Oracle数据库的企业的DBA和开发人员来说,了解并掌握Oracle针对海量数据的数据压缩技术,是一件极其迫切而重要的需求。

参考文献

[1]谭怀远.让Oracle跑得更快2——基于海量数据的数据库设计与优化[M].电子工业出版社,2011.