关于框架在插入大量数据时候的效率慢的问题疑问

Blade 未结 5 1850
8855709
8855709 2021-08-24 10:21

一、该问题的重现步骤是什么?

1. 准备:一个Spring Jdbctemplate的环境、一个Springboot+Mybatis的纯净环境、Bladex框架-Biz工程

2. 同时对单表,18个字段进行批量插入,分别测试100-10万条数据的插入。数据库为MySQL。

3.记录每次插入的时间。


二、你期待的结果是什么?实际看到的又是什么?


期待的结果是:框架的插入效率,应该跟Spring+Mybatis差异不大,但是实际看到的结果是,在批量插入超过5000条的时候,我们框架的插入速度已经比Spring+Mybatis慢了1倍。

(插入均采用 Mybatis Mapper,传入List,XML文件为insert 

可以看到,批量插入上万之后,纯净Mybatis已经比JdbcTemplate慢了1倍,而框架又比Mybatis慢了1倍。


能不能查一下,框架是哪里的封装影响了效率,我认为慢其实是可以接受的,毕竟封装就会慢,但是这个慢了1倍,还是太多了,或者给一个方向,我们的行业,批量数据同步很多,很多导入、接口引导等存在不少上万数据导入的场景,所以比较关注这个问题。


           插入方式

插入条数    
jdbc纯净Spring+Mybatis使用框架测试SqlExecute(日志打印SQL实际执行时间)
100204217566
50026734019522
100029442739541
200037258471870
50006199671789157
1000093414683470374
500002503485692341460
10000046359318210987465


三、你正在使用的是什么产品,什么版本?在什么操作系统上?

最新版本,windows系统,IDEA开发环境,32GB内存电脑,配置应该是没问题的,而且测试是在同一台电脑同一个数据库。


四、请提供详细的错误堆栈信息,这很重要。


五、若有更多详细信息,请在下面提供。

如还需要其他信息,可以在评论区继续讨论

5条回答
  •  admin
    admin (楼主)
    2021-08-24 11:43

    框架会有token解析、xss防注入、多租户插件拦截等额外的操作,在这个上面会耗时。

    如果想让性能和原生一致,你把对应接口做token放行、xss关闭、多租户关闭就可以了。

    因为内部用的就是mybatis-plus,把业务相关的逻辑去掉,就和原生一样了。

提交回复