插入2万调数据耗时_Oracle(3) In Memory(2)

继续之前Oracle In Memory测试,准备了以下场景:

1、数据插入操作, 比较启用in memory前后,数据插入性能的情况;

2、数据更新操作,针对特定列进行全表更新,比较对更新的影响;

3、select使用聚合函数,包括distinct操作等; 

4、select使用group by语句进行数据分组操作; 

5、多表关联场景下,inmemory组件的影响。

测试笔记本配置如下,其上部署虚拟机,安装Centos8.1和oracle19c。

c4d1d2b898489b1020f0da8dd62ff00d.png

分别针对表未启用inmemory,inmemory无压缩和inmemory压缩三种场景,有以下测试记录:

操作无inmemory启用inmemory启用inmemory且压缩
insert103s108s110s
update114s110s106s
aggregate4s84ms4s90ms4s96ms
group by 1s60ms1s37ms1s72ms    ‍
join1s59ms1s60ms1s71ms

小结:

1、启用inmemory对insert操作,由于增加了内存区域的维护,耗时增加。

2、对于update操作,更新过程中涉及到数据读取,因此更新性能反而提升。

3、查询类操作,group by语句测试有提升,而针对单个字段进行求和,inmemory选项启用后,其性能提升明显,但当涉及字段较多时,其性能提升反而无明显效果。

PS:

由于测试条件所限,测试用笔记本的cpu性能不足,启用inmemory压缩后,性能反而明显下降。

No.26。

附详细测试记录:

1 插入300万数据,时间依次为103s,108s和110s,inmemory会引起insert性能的些许下降。

d5bc184fd28f539370000cc588dcaa65.png

116890faa91059f0ce30e4fb97fa9d88.png

cd364f0f669f24be97db8c1f480fe861.png

2 数据更新操作,未启用inmemory选项耗时长于启用inmemory选项,inmemory压缩的方式耗时最短。

4b8e5800d0fb150511d8179ef63bf344.png

e824ae06a4b12b73f32e3a16a9cceea6.png

01d65146a124dafe0008068ca612a5a8.png

3 select聚合函数验证,无法看出inmemory选项的优势。

4fe18339a15874fdaa01f8fbf2cbb637.png

3946d774be59b3a08d1eaea7a6d4b338.png

8493c57a9a70e9b36185c74297fcaf9f.png

4 group by语句,inmemory选项执行时间最优。

64f6692446d103f9f7d218614ac65b39.png

d4ed5da4475b4bd8f4308c73c9fa3beb.png

42119c2e757e2033f24ed9f552dd0a72.png

5 join操作,无inmemory和inmemory选项无压缩,二者性能接近。

864398a95229fff9137c67bbbf372a01.png

43e07d001726198e6d8dc3c68e58f35e.png

4cf8ac10bb80b14d3e560a5307a720c0.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL插入数据耗时受多个因素影响。其中一些因素包括数据库服务器性能,硬盘速度,网络传输速度,代码解析效率,以及MySQL的相关配置。 具体来说,以下因素可能导致MySQL插入数据耗时增加: 1. Mysql插入缓存(bulk_insert_buffer_size):Mysql在插入数据时会使用插入缓存,而较小的缓存大小可能导致频繁的刷新操作,从而增加插入数据耗时。 2. 数据库约束条件验证:每次插入数据时,MySQL都需要验证是否违反表中的约束条件(如主键、唯一约束等),这个验证过程也会增加插入数据耗时。 3. 索引构建:在InnoDB存储引擎中,数据通常会先写入缓存,然后写入事务日志,最后写入数据文件。这个过程中,索引的构建也会带来一定的时间消耗。 4. 事务提交模式:默认情况下,MySQL的事务自动提交模式是开启的,这意味着每次执行插入语句都会立即提交事务,这会导致频繁的事务提交,从而降低插入数据的速度。可以通过手动开启事务,并在所有插入任务完成后再提交事务来提高插入数据的效率。 5. innodb_flush_log_at_trx_commit设置:如果将innodb_flush_log_at_trx_commit设置为2,MySQL会在每次事务提交时将日志缓冲区的数据写入日志文件。然而,刷新操作(即将数据刷到磁盘)并不会立即进行,而是每秒执行一次。这种设置可能会影响插入数据耗时。 除了以上因素,还有其他一些因素可能会对MySQL插入数据耗时产生影响,例如服务器性能、CPU性能、硬盘速度和网络传输速度等。 综上所述,MySQL插入数据耗时受多个因素影响,包括Mysql插入缓存、约束条件验证、索引构建、事务提交模式和innodb_flush_log_at_trx_commit设置等。优化这些因素可以提高插入数据的速度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值