mysql批量插入常用foreach的方式,但是经过项目实践发现,当表的列数较多(20+),以及一次性插入的行数较多(5000+)时,整个插入的耗时十分漫长。方法1:这时我们可以考虑减少一条 insert 语句中 values 的个数,大概在10~100行,使速度最快。一般按经验来说,一次性插20~50行数量是比较合适的,时间消耗也能接受。方法2:根据MyBatis文档中写批量插入的时候,是推荐使用另外一种方法,将MyBatis session 的 executor type 设为 Batch ,然后多次执行插入语句。(参考 http://www.mybatis.org/mybatis-dynamic-sql/docs/insert.html 中 Batch Insert Support 的内容)
SqlSession session = sqlSessionFactory.openSession(ExecutorType.BATCH);
try {SimpleTableMapper mapper = session.getMapper(SimpleTableMapper.class);List<SimpleTableRecord> records = getRecordsToInsert(); // not shownBatchInsert<SimpleTableRecord> batchInsert = insert(records).into(simpleTable).map(id).toProperty("id").map(firstName).toProperty("firstName").map(lastName).toProperty("lastName").map(birthDate).toProperty("birthDate").map(employed).toProperty("employed").map(occupation).toProperty("occupation").build().render(RenderingStrategy.MYBATIS3);batchInsert.insertStatements().stream().forEach(mapper::insert);session.commit();
} finally {session.close();
}

参考资料

  1. http://www.mybatis.org/mybatis-dynamic-sql/docs/insert.html

MySQL批量插入性能优化相关推荐

  1. mysql批量插入性能优化:executeBatch如何通过rewriteBatchedStatements参数逆袭

    文章目录 前言 一.实战演示 1.单元测试 2.不添加rewriteBatchedStatements参数 3.添加rewriteBatchedStatements参数 4.采用InsertBatch ...

  2. mybatisPlus批量插入性能优化

    背景:物联网平台背景,传感器采集频率干到了1000Hz,分了100多张表出来,还是把mysql干炸了.当前单表数据量在1000来w,从kafka上拉数据异步批量插入,每次插入数据量1500条,测试的时 ...

  3. c mysql批量插入优化_MySQL实现批量插入以优化性能的教程

    这篇文章主要介绍了MySQL实现批量插入以优化性能的教程,文中给出了运行时间来表示性能优化后的对比,需要的朋友可以参考下 对于一些数据量较大的系统,数据库面临的问题除了查询效率低下,还有就是数据入库时 ...

  4. mysql如何优化性能优化_如何优化性能?MySQL实现批量插入以优化性能的实例详解...

    这篇文章主要介绍了MySQL实现批量插入以优化性能的教程,文中给出了运行时间来表示性能优化后的对比,需要的朋友可以参考下 对于一些数据量较大的系统,数据库面临的问题除了查询效率低下,还有就是数据入库时 ...

  5. Mysql批量插入更新性能优化

    Mysql批量插入更新性能优化 对于数据量较大的插入和更新,因io/cpu等性能瓶颈,会产生大量的时间消耗,目前主流的优化主要包括预编译.单条sql插入多条数据.事务插入等,下面详细介绍一下: 单条插 ...

  6. MYSQL批量插入数据库实现语句性能分析

    MYSQL批量插入数据库实现语句性能分析 假定我们的表结构如下 代码如下   CREATE TABLE example ( example_id INT NOT NULL, name VARCHAR( ...

  7. mysql批量插入跟更新_Mysql批量插入和更新的性能-问答-阿里云开发者社区-阿里云...

    利用Hibernate,连接池使用的是BoneCP,做了一个MySql批量插入和批量更新的Demo,出现了下面两个问题. 1.批量插入.我采用的是原生态的JDBC,每次批量插入60条数据左右(数据量不 ...

  8. Mysql批量插入数据问题解决和优化

    Mysql批量插入数据问题解决和优化 一.问题描述 项目中mysql批量插入大概50000左右数据,使用事务和批量,但是速度依旧很慢,大约60s左右,迫切希望改进这个问题. 二.问题原因 尽管是批量a ...

  9. mysql批量插入跟更新_Mysql批量插入和更新的性能

    利用Hibernate,连接池使用的是BoneCP,做了一个MySql批量插入和批量更新的Demo,出现了下面两个问题. 1.批量插入.我采用的是原生态的JDBC,每次批量插入60条数据左右(数据量不 ...

  10. mysql批量插入 增加参数_MySql 的批量操作,要加rewriteBatchedStatements参数

    MySql 的批量操作,要加rewriteBatchedStatements参数 作者:赵磊 博客:http://elf8848.iteye.com ------------------------- ...

最新文章

  1. linux kernel内存回收机制
  2. 结对编程——单元测试
  3. 科技部:论文数量、影响因子不可与奖励奖金挂钩,网友:早就该治了
  4. The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone
  5. tms570 can 接收大量数据_超全!嵌入式必懂的CAN总线一文讲通了
  6. python 自动化办公 uibot_使用 Python 扩展丰富 UiBot 的功能及在 UiBot 中引用 Python 模块...
  7. android:persistent (非系统app失效)
  8. 团队博客作业-团队个人贡献分分配规则
  9. nginx学习文档之三 nginx常用命令
  10. AutoCAD2012从入门到精通中文视频教程 第46课 三维实体及创建实体命令1(个人收藏)
  11. 大数据Hadoop基本概念介绍
  12. 【C++ 开根号和平方运算】
  13. 软件测试之-系统测试
  14. 笔试面试题:25匹赛马,5个跑道,每次有5匹马可以同时比赛。问最少比赛多少次可以知道跑得最快的5匹马
  15. 二层交换机、三层交换机和路由器的区别
  16. 又一位华为工程师倒下了 程序员的世界怎么了?
  17. 每天学命令write_ldb
  18. 两轮电自2.0时代开启 小牛电动以独立主见创造新物种
  19. [软件工程]关于调查报告的响应和看到张恂的批评
  20. 有道云笔记不同步_有道云笔记无法同步如何处理?笔记无法同步解决方法介绍...

热门文章

  1. 互动直播系统源码,直播系统依托于IM技术
  2. 外企面试官最爱提的十个问题
  3. pe擦除服务器硬盘,怎么彻底删除硬盘数据
  4. Selenium官网首页译
  5. Android聊天软件开发(基于网易云IM即时通讯)——注册账号(二)
  6. 初中参观机器人博物馆的作文_参观足球机器人实验室_550字
  7. 没想到还可以用地图这么讲故事?Esri产品布道师为你精细了18个应用案例
  8. 艾宾浩斯曲线在线 PDF 文件生成 在线背单词 背单词计划表 高考-四级-六级-SAT-托福-雅思-GRE-17 天搞定 GRE 单词, 背单词神器-动态生成时间表! 利用艾宾浩斯记忆曲线自动生成背单
  9. YOLO系列详解:YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5
  10. 红外接收头图片_常见红外接收头、遥控接收头图片、引脚定义