【Table Compression】OLTP压缩(OLTP Compression)
2016-07-03 15:22
567 查看
OLTP压缩概述
OLTP压缩的设置方法
OLTP压缩的处理逻辑
OLTP压缩和RedoUndo
参考
OLTP压缩(OLTP Compression)属性的设定语法,在Oracle的各个版本上略有不同,但向后兼容,并且12.1的版本上也可以使用11.1和11.2版本的语法,具体语法如下:
例: (on 12.1 version)
当DML(insert、update)进行处理时,如果块的使用率超过某临界值*1时,就会触发块内数据的压缩处理。
简单的处理逻辑可以概括如下:
※关于触发压缩处理的临界值*1:
关于这个临界值通常根据块的空余大小、行大小、PCTFREE等因素,由Oracle内部算法算出。
Advanced Compression with Oracle Database 11g
版权声明:本文为博主原创文章,转载请注明出处,谢谢。http://blog.csdn.net/lukeunique
OLTP压缩的设置方法
OLTP压缩的处理逻辑
OLTP压缩和RedoUndo
参考
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 2012Advanced Compression with Oracle Database 11g
版权声明:本文为博主原创文章,转载请注明出处,谢谢。http://blog.csdn.net/lukeunique
相关文章推荐
- Android之获取手机上的图片和视频缩略图thumbnails
- 基于 Red Hat 的发行版 Oracle Linux 正式发布Oracle Linux 7.1
- 数据库链接字符串查询网站
- Oracle Containers for J2EE远程安全漏洞(CVE-2014-0413)
- Linux打包压缩命令
- Oracle 10g R2不能使用EM的问题
- 表空间操作
- PreparedStatement中in子句的处理
- VMware下RedHat4.8_64位安装Oracle 10g RAC--简略脚本
- oracle sql日期比较
- 基于 Red Hat 的发行版 Oracle Linux 正式发布Oracle Linux 7.1
- DB2实例管理
- DB2实例管理
- OS block size和Oracle block size,查找OS Blocksize的方法
- 保障MySQL数据安全的14个最佳方法
- mysql问答汇集
- oracle中创建数据库和表空间的几点总结
- 数据库自动备份脚本