在数据量变的很大的情况下,可以考虑表压缩,减少磁盘的存储,减少buffer cache的消耗,加快查询的速度,压缩需要在数据加载和dml的时候消耗一些cpu.表压缩对于应用是透明的。
你可以在表空间,表或分区级别指定压缩,如果在表空间级别指定压缩,那么这个表空间中的所有表默认都是压缩的。
压缩会发生在数据插入,更新或批量加载到表时。有几种类型的压缩。基本的,oltp的,dss的,归档的。他们的cpu消耗见文档。
当使用基本压缩,数据仓库压缩,或归档压缩的时候,压缩仅仅是在批量加载到一个表的时候发生。当你使用了oltp压缩,压缩发生在数据插入,更新,批量加载。
如果你使用了alter table命令让表启用压缩,那么对于已存在的数据是不受影响的,只有在启用压缩后的插入,或更新会受影响。也可以使用ALTER TABLE…NOCOMPRESS将一个表设置成非压缩,对于已经的压缩的表是没有影响的,压缩的数据还是压缩的,只是新插入的数据是不被压缩。
创建一个oltp压缩类型的表
CREATE TABLE orders … COMPRESS FOR OLTP;
如果你不指定压缩的类型,那么默认的