Oracle 12.2 Hybrid Columnar Compression New Feature

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还是不会压缩的。

Comments are closed.