oracle+12c+大表,Oracle 12c新特性:IN-Memory Option - 列存与压缩

Oracle 12c新特性:IN-Memory Option - 列存与压缩

6ee5639a40442445944d63b514b2dd02.png

在12c的In-Memory Option选件之中,数据在内存的独立区域中按照列式存储,数据是被压缩存放的,内存与列式压缩可以极大提升查询的性能,下图是IMO的示意图:

532cf9f82038586c1637ff42a2a72c7c.png

接下来我们来验证一下列存的压缩比率和查询性能。

首先查看IMO的内存分配情况,初始启动数据库,可以看到1MB Pool分配了大约3M的内存空间:

5900ab780a5b4d06f25e64a8d006d88c.png

接下来将一张数据表设置到内存中,并且通过查询加载:

f521e0faa3a08ab934076199fde5c249.png

在加载过程中,内存使用增加,直至完成:

41f5e004f169b3d03302bc20d436eb62.png

由此我们可以根据数据表的大小和内存分配空间,计算出内存列式压缩的比率。BILL表共使用内存大约300M:

SQL> select (313524224 + 720896 + 3145728)/1024/1024 MB from dual;

MB

----------

302.6875

而该表在行式存储上占用了 952 MB:

SQL> select bytes/1024/1024 MB from DBA_segments where segment_name='BILL';

MB

----------

952

这意味着使用列存,使得存储空间压缩到了原来的30%,这是一个计费的测试数据表,在使用IMO查询,全表扫描仅用了80ms就完成了查询:

c86dc44ebff2759b147a28c1fb0b0427.png

在以下测试中,我们创建一个非IMO对象,基于一个字段进行Distinct查询,在查询结果中,响应时间分别为1320 ms和70 ms,也有19倍的响应差距:

7a45346357dea41694b4501b77e17077.png

以下是执行计划及逻辑读等统计信息输出:

fca503fe4b0353074d37a517bfd2cd8f.png

By eygle on 2014-07-23 11:15 |

Comments (0) |

OraNews |

Oracle12c/11g | 3156 |

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值