Oracle 的压缩技术到目前为经历了三个阶段:
Basic:
出现在9i中,它只对direct path load 的数据进行压缩;但是数据的修改使其会以普通格式存储,并且仍旧是以row方式存储的;
CREATE TABLE … COMPRESS;
OLTP
引人与11g,它运行对所有的操作都进行压缩;
其压缩过程可以用下图表示:
数据未压缩时:
压缩后:
这种压缩方式的存储与basic是相同的,只是预留了更多的10%的空闲空间;
CREATE TABLE … COMPRESS FOR OLTP;
HCC
这种方式的压缩只能在exadata storage中使用;当使用direct load加载数据时,采用以HCC压缩,传统的插入和更新是以OLTP方式压缩的;
HCC压缩方式有四个级别:
类型 | 说明 | 压缩比 |
Query low | 使用LZO压缩机制;消耗的cup最小;解压也快;注重速度 | 4x |
Query high | 使用ZLIB压缩机制 | 6x |
Archive low | 使用ZLIP机制,压缩比有所提高 | 7x |
Archive high | 使用 Bzip;最消耗cpu;数据类型不同其压缩比也有变化; | 12x |
HCC的存储方式发生变化,不再是以传统的行为基础,如下图所示:
在存储上进行了中心组织;block是以compression unit 进程存储的;一个CU由多个block组成;而且数据再block中是以列进行的存储;这能够提高查询速度,但是其缺点如果查询一个行的所有列则会访问所有的block;所以要注意系统的单行读情况;
在加载和查询数据时由于采用了新技术,对硬件资源消耗的提升是不可避免的,但是其所带来的益处是显而易见的;
对于dml操作也需要多注意;因为在一个表中一旦出现了不同的压缩方式,可能对性能会产生影响;
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25656398/viewspace-709764/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/25656398/viewspace-709764/