本文介绍Oracle表压缩(Table Compression)技术概述及其历史演变
在Oracle数据库中,普通表(即堆表)可以进行压缩技术来提高数据库性能和节省存储空间。
表压缩(Table Compression)的好处和缺点主要如下:
好处:节省磁盘空间、减少buffer cache的使用、减少I/O 、某些情况下还能加快查询执行时读的速度
缺点:加载数据和进行DML时消耗更多的CPU
表压缩根据压缩方法不同可以分为以下几类:
基本表压缩(Basic table compression)
高级行压缩(Advanced row compression)
混合列压缩(EHCC)
Warehouse compression
Online archival compression
详细分类还可以参考在线文档中的下表:
Database Administrator's Guide
>20 Managing Tables
>>Consider Using Table Compression
9.2&10g版本:
ALTER TABLE <table_name>
COMPRESS | NOCOMPRESS
11.1版本:
ALTER TABLE <table_name>
COMPRESS [ FOR { ALL | DIRECT_LOAD } OPERATIONS ]
| NOCOMPRESS
11.2版本:
ALTER TABLE <table_name>
COMPRESS [ BASIC
| FOR { OLTP
| { QUERY | ARCHIVE } [ LOW | HIGH ]
}
]
| NOCOMPRESS其中“COMPRESS FOR OLTP”用于代替11.1版本的“COMPRESS FOR ALL OPERATIONS”。
12.1版本:
ALTER TABLE <table_name>
COMPRESS
| ROW STORE COMPRESS [ BASIC | ADVANCED ]
| COLUMN STORE COMPRESS [ FOR { QUERY | ARCHIVE } [ LOW | HIGH ] ]
[ [NO] ROW LEVEL LOCKING ]
| NOCOMPRESS
我们可以通过ALLTABLES/DBATABLES等视图的COMPRESSION和COMPRESS_FOR来查看表压缩的设置状况。
参考:
Database Concepts
http://docs.oracle.com/database/121/CNCPT/tablecls.htm#CNCPT010
>Table Compression
Database Performance Tuning Guide
https://docs.oracle.com/database/121/TGDBA/pfgrf_build_db.htm#TGDBA94152
>Table Compression
>>Estimating the Compression Factor
>>Tuning to Achieve a Better Compression Ratio
Database Administrator's Guide
>20 Managing Tables
http://docs.oracle.com/database/121/ADMIN/tables.htm#ADMIN13948
>Consider Using Table Compression