首页 > 数据库 > Oracle > oracle压缩技术
大概在2个月前听说了数据压缩,但是知道的是表级别的压缩存储,但一直都没有实验也没有深入研究,很多时候看书,如果不实验,就很容易忘记。
11g在数据压缩方面有一些特性如下:
Compression for Table Data
Compression for File Data
Compression for Backup Data
Compression for Network Traffic
1. Compression for Table Data
对于表中数据的压缩,其实就是将块中重复的记录压缩,重复数据越多,压缩比例越高,一般都是到2倍到4倍左右。压缩不光可以节省空间,还可以减少物理读。关于块是何时被压缩的,其实最开始块中没有数据的时候是不被压缩的,只有当块中数据达到一个阀值后,才开始压缩。所以块压缩对数据写入有一定的影响。
创建表是可以指定COMPRESS FOR OLTP表示该表为压缩格式。如果表已经创建,那可以通过alter table COMPRESS FOR OLTP来调整,从此只对调整后的dml发生压缩,对以前的数据还是不压缩的。
1)alter table .. move compress将一个存在的表转化成压缩表
SQL> select segment_name,bytes from dba_segments where segment_name = 'T11';
SEGMENT_NAME BYTES
--------------------------------------------------------------------------------- ----------
T11 301989888
SQL> alter table t11 move compress;
Table altered.
SQL> select segment_name,bytes from dba_segments where segment_name = 'T11';
SEGMENT_NAME BYTES
--------------------------------------------------------------------------------- ----------
T11 100663296---缩小了2/3。
SQL> select table_name,compression from user_tables where table_name='T11';
TABLE_NAME COMPRESS
------------------------------ --------
T11 ENABLED
2)表空间的压缩
SQL> alter tablespace …… default compress;
SQL> alter tablespace …… default nocompress;
如果定义表空间是压缩模式,那在此下面的所有对象(出索引意外)将都为压缩模式。
3)物化视图的压缩
SQL> create materialized view 。。 compress as select。。where 。。。;
SQL> alter materialized view……compress;
4)分区表的压缩
SQL> alter table。。move partition 。。 compress;
可以单独对某个分区进行设置,如果对表设置的话,那就将每个分区都启动了压缩机制。
5)索引的压缩
索引中,基本可以肯定重复值很少,所以我们基本不需要在索引上设置压缩。
2. Compression for File Data
找了很多资料,都没有发现这个啥功能。
3. Compression for Backup Data
备份压缩,例如rman中的那些种压缩方式,还有expdp/impdp
4. Compression for Network Traffic
指的是dg中redo的传输时,压缩和解压缩。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/24500180/viewspace-1063782/ ,如需转载,请注明出处,否则将追究法律责任。