ORACLE中的行压缩
压缩的作用
- 主要目的是降低磁盘空间需求
- 提高后续的查询性能
ORACLE中压缩
压缩的三种形式:
- 基本表压缩:通过直接加载的方式插入表时,压缩一个块中的数据,后续的DML操作会解压行数据,有可能会发生行迁移
- 高级行压缩:只要出现插入行的操作,就会压缩行,通过DML维持压缩。
- 混合列式压缩(Hybrid Columnar Compression,HCC),把数据构建到几个MB大小的压缩单元
- ORACLE中只有上面三种原理的压缩。
- 其中基本表压缩和高级行压缩都是基于数据块的,也就是他们的压缩其实操作的是数据块。
- HCC只能在某些存储平台上使用,包含两种:Warehouse Compression和Archive Compression
- 压缩的类型在创建表时确定,也可以在创建后添加或者删除。
OACLE中的压缩原理
三种压缩方式中,基本表压缩和高级行压缩是基于数据块操作的,他们压缩的实现其实就是去重。在基本表中如果块出现了多个重复字符,并且重复字符符合一定的模式,则在符号表中仅存储一次,高级行压缩也是去重。
HCC是真正意义上的压缩,它使用压缩算法减少存储数据所需要的空间。HCC不能应用于数据块,而是应用于块组,所以可以提高压缩率。
启用ORACLE压缩
在创建表时启用基本压缩或者高级压缩
CREATE TABLE .... COMPRESS [BASIC]
CREATE TABLE .... ROW STORE COMPRESS ADVANCED;