
Oracle 12.2 Hybrid Columnar Compression New Feature
Oracle 12.2 在混合列压缩上的新功能不多,可以说只是一个小的功能增强。
我们知道,要想让混合列压缩生效,对于表的更新操作必须是direct path方式的,比如:
- CREATE TABLE AS SELECT
- INSERT /*+APPEND*/ … SELECT …
- ALTER TABLE MOVE
- SQL*Loader direct path
等等
以往,insert语句是一定要使用APPEND这个hint的,否则这个insert语句会导致出入的记录没有按照表的定义压缩。
在12.2,对于array insert,这个APPEND可以不用写了,直接就可以让HCC生效。所谓的array insert就是像
insert into table_name1 select * from table_name2 这样的语句。
我们可以通过一个小实验验证一下:
首先,我们要了解一下如何得到记录的压缩方式,Oracle提供了一个系统包,DBMS_COMPRESSION,其中的函数GET_COMPRESSION_TYPE可以得到记录的压缩方式。
这个函数的调用方式:
DBMS_COMPRESSION.GET_COMPRESSION_TYPE (
ownname IN VARCHAR2,
tabname IN VARCHAR2,
row_id IN ROWID,
subobjname IN VARCHAR2 DEFAULT NULL))
RETURN NUMBER;
返回的数字和压缩方式的对应关系:
Value |
Description |
1 |
No compression |
2 |
Advanced compression level |
4 |
High compression level for query operations |
8 |
Low compression level for query operations |
16 |
High compression level for archive operations |
32 |
Low compression level for archive operations |
C:\Users\raobing>sqlplus raobing@dbaccess
SQL*Plus: Release 12.1.0.2.0 Production on 星期一 1月 23 16:52:42 2017
Copyright (c) 1982, 2014, Oracle. All rights reserved.
输入口令:
上次成功登录时间: 星期一 1月 23 2017 16:51:05 +08:00
连接到:
Oracle Database 12c Enterprise Edition Release 12.2.0.0.3 – 64bit Production
SQL> create table test1 compress for query high as select * from system.help where 1=2;
表已创建。
SQL> insert into test1 select * from system.help;
已创建 977 行。
SQL> commit;
提交完成。
SQL> select DBMS_COMPRESSION.GET_COMPRESSION_TYPE (‘RAOBING’,’TEST1′,rowid) CT,t.* from test1 t;
。。。。。。
CT TOPIC SEQ INFO
———- —————————— ———- ————————————————–
4 TOPICS 47 REMARK
4 TOPICS 48 REPFOOTER
4 TOPICS 49 REPHEADER
4 TOPICS 50 RESERVED WORDS (PL/SQL)
4 TOPICS 51 RESERVED WORDS (SQL)
4 TOPICS 52 RUN
4 TOPICS 53 SAVE
4 TOPICS 54 SET
4 TOPICS 55 SHOW
4 TOPICS 56 SHUTDOWN
4 TOPICS 57 SPOOL
CT TOPIC SEQ INFO
———- —————————— ———- ————————————————–
4 TOPICS 58 SQLPLUS
4 TOPICS 59 START
4 TOPICS 60 STARTUP
4 TOPICS 61 STORE
4 TOPICS 62 TIMING
4 TOPICS 63 TOPICS
4 TOPICS 64 TTITLE
4 TOPICS 65 UNDEFINE
4 TOPICS 66 VARIABLE
4 TOPICS 67 WHENEVER OSERROR
4 TOPICS 68 WHENEVER SQLERROR
CT TOPIC SEQ INFO
———- —————————— ———- ————————————————–
4 TOPICS 69 XQUERY
已选择 977 行。
每一行的压缩类型都是4,代表是query high。
这个特性只是在insert … select 这种情况下不用加 APPEND hint了,正常的insert还是不会压缩的。