乐趣区

关于oracle:干货丨采用-Oracle12c-In-memory-特性一定能提高性能吗

转自 @twt 社区,作者:杨建旭。

【摘要】Oracle 12c 中的 In memory 个性,到底对性能有多大晋升?本文形容了在一系列的试验中,不同场景下的性能体现。

Oracle 12c 中的 In memory 选件通过在 SGA 中调配独立的内存区域 (In Memory Area),对数据应用列式压缩存储来进步查问性能。

那么,这个 In memory 个性,到底能对性能有多大晋升,咱们做了一系列的试验,来看看不同场景下的性能体现。但首先要说的是,采纳了 In memory 个性,性能并不一定进步,前面我会举例子。

1、相干参数

In Memory 区的大小由参数 inmemory_size 管制,该参数是一个动态参数 , 批改后须要重启数据库方可失效。

批改命令:

SQL> alter system set inmemory_size=2G scope=spfile;

System altered.

重启之后

2、一般场景下,数据库采纳 In-memory 个性后,利用查问速度都有显著晋升。

利用查问测试后果

能够看出,三种查问条件,采纳了内存个性之后,响应工夫别离晋升了 23倍、2 倍和 6 倍。**

3、数据库采纳 In-memory 个性后,增删改的执行速度差别不大。

增删改测试后果

4、某些场景插入的速度依然有较大晋升

不过在某些场景下(比方,单用户大批量插入,前面的案例均采纳单用户),插入的速度还是能够晋升不少的,如下图。

测试案例中筹备了 100 万笔数据,采纳 Insert into Select 形式插入两张表,测试后果如下:

5、有其余业务压力烦扰下的查问性能比照

某简单的联结查问,内存表比一般表的查问速度晋升 20 倍。那么,在有其余业务压力烦扰下,它的查问性能是怎么样的?

带着这个问题,咱们以每秒 5000 笔的速度向内存表和一般表插入数据。在该压力下测试这个简单联结查问的性能

简单 SQL:此处略过,写进去有好几行,看不懂

能够看出,在这个压力烦扰下(每秒 5000笔插入数据的烦扰),这个查问性能的晋升,从原来的 20 倍,变成了 4.3 倍。**

6、DML v.s. QUERY LOW 形式

Oracle 有不同的压缩形式,咱们先看看有哪些,都是怎么介绍的。

关注一下“MEMCOMPRESS FOR QUERY LOW”,咱们简称 QUERY LOW 吧,这个是缺省形式,号称查问性能最优。

下面的试验中咱们是采纳 DML 的形式的内存表,当初采纳 QUERY LOW 形式试试:

内存表采纳 QUERY LOW 形式后,性能晋升变成了 3.5 倍,仿佛还不如 DML 的晋升 4.3 倍。看来官网文档也只能参考参考,具体您的环境、您的场景是什么参数性能好,那还得去调优。

DML v.s. QUERY LOW 形式的性能确实有差别,这种差别是固定的吗?

咱们换一个 SQL 语句,换成一个比较简单的 SQL 查问看看

在这个简略 SQL 查问的场景中,QueryLow 形式性能晋升成果更显著。因而,谁快谁慢 it depends。

7、跨分区查问
在两实例均开启 In-Memory 个性的状况下,跨分区查问的效率居然不如只在一个实例应用 In-Memory 个性。

8、综上

总体来说,In-Memory 个性是能够晋升大部分查问场景的性能,但增删改场景很可能是混个持平,对于一些非凡场景,居然还不如不应用 In-Memory。不同的压缩形式下,性能确实不同,但有些场景下并不是官网介绍的那个性能后果,如果要失去最佳的性能,还得靠调优。

退出移动版