继续之前Oracle In Memory测试,准备了以下场景:
1、数据插入操作, 比较启用in memory前后,数据插入性能的情况;
2、数据更新操作,针对特定列进行全表更新,比较对更新的影响;
3、select使用聚合函数,包括distinct操作等;
4、select使用group by语句进行数据分组操作;
5、多表关联场景下,inmemory组件的影响。
测试笔记本配置如下,其上部署虚拟机,安装Centos8.1和oracle19c。
分别针对表未启用inmemory,inmemory无压缩和inmemory压缩三种场景,有以下测试记录:
操作 | 无inmemory | 启用inmemory | 启用inmemory且压缩 |
insert | 103s | 108s | 110s |
update | 114s | 110s | 106s |
aggregate | 4s84ms | 4s90ms | 4s96ms |
group by | 1s60ms | 1s37ms | 1s72ms |
join | 1s59ms | 1s60ms | 1s71ms |
小结:
1、启用inmemory对insert操作,由于增加了内存区域的维护,耗时增加。
2、对于update操作,更新过程中涉及到数据读取,因此更新性能反而提升。
3、查询类操作,group by语句测试有提升,而针对单个字段进行求和,inmemory选项启用后,其性能提升明显,但当涉及字段较多时,其性能提升反而无明显效果。
PS:
由于测试条件所限,测试用笔记本的cpu性能不足,启用inmemory压缩后,性能反而明显下降。
No.26。
附详细测试记录:
1 插入300万数据,时间依次为103s,108s和110s,inmemory会引起insert性能的些许下降。
2 数据更新操作,未启用inmemory选项耗时长于启用inmemory选项,inmemory压缩的方式耗时最短。
3 select聚合函数验证,无法看出inmemory选项的优势。
4 group by语句,inmemory选项执行时间最优。
5 join操作,无inmemory和inmemory选项无压缩,二者性能接近。