文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Java实现百万级数据量向MySQL批量插入

2023-08-25 12:58

关注

大数据向mysql表同步百万级数量,我们需要将大数据表里同步过来的数据分别向三张业务表做数据同步,最终将业务表的数据展示给前台进行相关业务操作。
数据量级
大数据表:700w数据量
三张业务表分别需要同步:23w、80w、680w

针对批量插入选择方案:

  1. mybatis批量插入
  2. mybatis批量插入+数据分批
  3. 原生jdbc批量插入+开启事务
  4. 原生jdbc批量插入+开启事务+数据分批
  5. 原生jdbc批量插入+开启事务+数据分批+多线程

方案对比结果:

  1. mybatis批量插入 1k数据量级
  2. mybatis批量插入+数据分批 10k数据量级
  3. 原生jdbc批量插入+开启事务 10w数据量级
  4. 原生jdbc批量插入+开启事务+数据分批 100w数据量级
  5. 原生jdbc批量插入+开启事务+数据分批+多线程 1000w数据量级

方案对比参考资料:
Mybatis与JDBC批量插入MySQL数据库性能测试
JAVA向Mysql插入亿级别数据
Mybatis批量插入
Mybatis批量插入优化

mybatis批量插入优缺点
优点:便于书写,代码优美,适用于小数据量批量插入
缺点:大数据量的批处理性能低下、批量处理数据量大小受限、导致对象回收GC问题
原生jdbc批量插入优缺点
优点:大数据量的批量处理速度快
缺点:大数据量需要数据分批、受制于jvm资源配置、mysql服务器配置、需要手动关闭数据库连接

原生jdbc批量插入速度优于mybatis原因:
mybatis需要对插入的字段做ORM对象映射 数据量越大消耗的资源和时间越多

大数据量批量更新问题背景

完成上述三张业务表插入数据后,我还需要对其中一张23w的表里两个字段做统计,统计的内容是对另一张业务表的80w数据根据客编号进行订单主体数和付款人数量进行统计

  1. 使用多线程,多线程配置没考虑java服务器配置 导致资源内存不足 产生OOM
  2. 在内存里进行大数据量的统计

多线程配置:

注:IO密集型(某大厂实践经验)
核心线程数 = CPU核数 / (1-阻塞系数)
或着
CPU密集型:核心线程数 = CPU核数 + 1
IO密集型:核心线程数 = CPU核数 * 2

多线程配置资料参考
java线程池合理设置最大线程数和核心线程数

内存里进行大数据量的统计 改为数据库进行统计 返回统计结果进行批量更新

内存统计优缺点:
优点:不需要频繁访问数据库和占用数据库连接资源
缺点:占用大量内存资源

数据库统计优缺点:
优点:不需要占用大量内存资源
缺点:需要频繁访问数据库、频繁IO、会占用数据库连接资源

来源地址:https://blog.csdn.net/abc_lx123/article/details/130046164

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯