【Table Compression】OLTP压缩(OLTP Compression)

勤奋不是嘴上说说而已,而是实际的行动,在勤奋的苦度中持之以恒,永不退却。业精于勤,荒于嬉;行成于思,毁于随。在人生的仕途上,我们毫不迟疑地选择勤奋,她是几乎于世界上一切成就的催产婆。只要我们拥着勤奋去思考,拥着勤奋的手去耕耘,用抱勤奋的心去对待工作,浪迹红尘而坚韧不拔,那么,我们的生命就会绽放火花,让人生的时光更加的闪亮而精彩。

导读:本篇文章讲解 【Table Compression】OLTP压缩(OLTP Compression),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

OLTP压缩概述

OLTP压缩(OLTP Compression)功能是从Oracle 11g版本开始推出的一种高级行压缩技术。通过OLTP压缩功能,可以在普通的DML操作过程中也可以对数据进行压缩,提高系统的性能。

OLTP压缩的设置方法

可以通过指定COMPRESS属性来使用压缩功能。
OLTP压缩(OLTP Compression)属性的设定语法,在Oracle的各个版本上略有不同,但向后兼容,并且12.1的版本上也可以使用11.1和11.2版本的语法,具体语法如下:

11.1版本上:
CREATE TABLE <table_name> COMPRESS FOR  OLTP;

11.2版本上:
CREATE TABLE  <table_name> COMPRESS FOR ALL OPERATIONS;

12.1版本上:
CREATE TABLE  <table_name> COMPRESS ROW STORE COMPRESS ADVANCED ;

例: (on 12.1 version)

SQL> CREATE TABLE t1 (c1 number) COMPRESS FOR ALL OPERATIONS;
Table created.
SQL> CREATE TABLE t2 (c2 number) COMPRESS FOR OLTP ;
Table created.
SQL> CREATE TABLE t3 (c3 number) ROW STORE COMPRESS ADVANCED ;
Table created.
SQL> col COMPRESS_FOR format a20
SQL> col TABLE_NAME format a20
SQL> select table_name, compression, compress_for from user_tables;

TABLE_NAME           COMPRESS COMPRESS_FOR
-------------------- -------- --------------------
T3                   ENABLED  ADVANCED
T2                   ENABLED  ADVANCED
T1                   ENABLED  ADVANCED

通过3种方法的设置结果是相同的,在12c上都表示为ADVANCED压缩 即OLTP压缩。

OLTP压缩的处理逻辑

OLTP压缩并不是以SQL文(如insert、update)为单位进行处理的,而是以块(Block)为单位进行处理。
当DML(insert、update)进行处理时,如果块的使用率超过某临界值*1时,就会触发块内数据的压缩处理。

简单的处理逻辑可以概括如下:

0.某块为可以进行Insert的状态(容量并没有达到PCTFREE)。

1.和普通DML处理逻辑一样进行的数据的INSERT或UPDATE。

2.当由于INSERT或UPDATE处理导致块的使用率超过某临界值*1时,触发块内数据的压缩处理。
(INSERT或UPDATE的进程进行)

3.由于压缩处理,块内再次有了空余空间,正常进行INSERT处理(非压缩)。

4.块的使用率再次到达某临界值*1时,触发块内数据的压缩处理。

5. 循环步骤3和4。

最终效果是块内同时存在着压缩和非压缩的数据。

※关于触发压缩处理的临界值*1:
关于这个临界值通常根据块的空余大小、行大小、PCTFREE等因素,由Oracle内部算法算出。

OLTP压缩和Redo、Undo

OLTP压缩时,块在被成功压缩前,为了一致的读取和事务回滚,需要把变更前的块保存到UNDO中。因此,在对OLTP压缩表进行更新和插入时会比非压缩表产生更多的UNDO;而产生UNDO时也会产生REDO,因此,OLTP压缩会导致相对较多的UNDO和REDO.

参考

An Oracle White Paper January 2012
Advanced Compression with Oracle Database 11g

版权声明:本文为博主原创文章,转载请注明出处,谢谢。http://blog.csdn.net/lukeunique

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/141633.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!