Oracle 12c中的表压缩技术

2017年12月16日讲师:史老师浏览:5115次

表压缩的功能11g中已有相关引入,但是在12c中,表的压缩选择更多,功能也更强,我们可以根据不同的业务需求及场景来选择。并且,表压缩也跟12c中一个新的特性相关。关于这个新的特性,我们下一篇文章再说。 压缩数据可以减少磁盘空间和内存占用,当然,最显著的,就是减少I/O,尤其是物理I/O。只不过,需要注意的是,启用压缩,会消耗额外的cpu资源,因为需要使用相关算法来完成数据的压缩和解压缩。 可以分别查询oracle官方文档 Oracle® Database SQL Language Reference 11.2 和 Oracle® Database SQL Language Reference 12.1 中的create table部分,来了解在11g和12c中表压缩部分的不同之处。 其中,11g中 compress 对应于12c中的compress basic; compress for oltp,对应于12c中的compress row store compress basic/advanced。 接下来,看几个简单的启用压缩的例子: 数据库版本12.1.0.2,操作系统OEL 7.1 1,创建测试表 TEST1@ora12> create table tab_test ( 2 id number, 3 name varchar2(30)) 4 compress basic; Table created. TEST1@ora12> select table_name,compression,compress_for from user_tables; TABLE_NAME COMPRESS COMPRESS_FOR --------------------------------------------------------------- TAB_TEST ENABLED BASIC 2,修改压缩选项 TEST1@ora12> alter table tab_test row store compress advanced; Table altered. TEST1@ora12> select table_name,compression,compress_for from user_tables; TABLE_NAME COMPRESS COMPRESS_FOR --------------------------------------------------------------- TAB_TEST ENABLED ADVANCED 注:对已存在的表启用压缩,则不会压缩表中的已有数据。 也可以使用压缩子句来创建表空间 TEST1@ora12> conn / as sysdba Connected. SYS@ora12> create tablespace tbs_test default row store compress advanced datafile '/u01/oracle/oradata/ora12/tbs_test.dbf' size 10m; Tablespace created. 以后创建在该表空间上的对象,默认都会启用压缩。 压缩选项的最后,还有column store compress for选项, 这个是混合列压缩的数据仓库选项和归档选项: TEST1@ora12> alter table tab_test column store compress for archive low; alter table tab_test column store compress for archive low * ERROR at line 1: ORA-64307: Exadata Hybrid Columnar Compression is not supported for tablespaces on this storage type 再测下另外一个: TEST1@ora12> alter table tab_test column store compress for query high; alter table tab_test column store compress for query high * ERROR at line 1: ORA-64307: Exadata Hybrid Columnar Compression is not supported for tablespaces on this storage type 可见,这两个都是针对Exadata环境下的存储才启用的。 关于Exadata的相关内容,这里不再多说。有兴趣的,请查阅Exadata相关技术文档。 当然,12c中,dbms_stats这个收集管理统计信息的系统包,也专门提供了支持Exadata的选项,oracle是铁了心的推广Exadata啊······
分享 1

您已经赞过了!