Mysql 批量插入 大概11W的数据

来源:7-5 调试时进不去断点?可能是多个Fliter卡住了

奶茶三兄弟d

2020-11-10

老师,现在有个场景就是需要向 Mysql中插入数据11W多,之前同事的做法就是,开了一个线程池(固定6个线程),

然后for循环里面去用线程池执行一个runnable任务,任务里面的逻辑就是每次插入1000条数据(1000条意思是说

Mysql批量插入1000条最合适),但感觉还是很慢! 这边要是您做优化的话,老师你怎么去做啊,思路是什么,

为什么这样比较好,谢谢老师

写回答

1回答

张勤一

2020-11-11

同学你好:

    MySQL 批量入库最好的方式不是用代码,反而用代码一定是非常慢的,原因其实很简单:

    (1)你的每一次插入(批量插入还好)都需要重新构建索引

    (2)执行速度取决于你使用的语言、机器性能、网络带宽等等

    所以,最好的入库方式是使用 MySQL 提供的工具 LOAD DATA LOCAL INFILE 'dump.txt' INTO TABLE mytbl; 

    执行这条命令最好的地方肯定是 MySQL 服务器所部署的机器上,这样省去了网络传输。你这里的数据仅仅有 11 万条,是小数据量。如果是更大规模的数据量,LOAD DATA 的方式体现的高性能就会更加的明显。


    我是勤一,致力于将这门课程的问答区打造为 Java 知识体系知识库,Java 知识体系 BBS!共同建造、维护这门课程,我需要每一个你!

2
2
张勤一
回复
奶茶三兄弟d
那就直接批量导入就好了,没有更优的方法了
2020-11-11
共2条回复

Java实操避坑指南 SpringBoot/MySQL/Redis错误详解

掌握业务开发中各种类型的坑,,Java web开发领域通用

466 学习 · 204 问题

查看课程