请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

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

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

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

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

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

正在回答

1回答

同学你好:

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

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

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

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

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


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

2 回复 有任何疑惑可以回复我~
  • 提问者 奶茶三兄弟d #1
    这10几万条数据都是根据 前面的结果查询出来的,每次都不一样,应该没办法通过 MySQL 提供的工具 LOAD DATA LOCAL INFILE 'dump.txt' INTO TABLE mytbl导入吧,老师,那这里只能通过代码的方式批量入库的话,有什么更好的方法吗
    回复 有任何疑惑可以回复我~ 2020-11-11 15:33:40
  • 张勤一 回复 提问者 奶茶三兄弟d #2
    那就直接批量导入就好了,没有更优的方法了
    回复 有任何疑惑可以回复我~ 2020-11-11 15:48:58
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信