码迷,mamicode.com
首页 > 数据库 > 详细

如何快速的将已知的1000万条数据插入到数据库中

时间:2019-06-25 09:51:55      阅读:302      评论:0      收藏:0      [点我收藏+]

标签:应用   完成   条件   span   one   插入   连接   mys   mysql服务器   

首先,可以定义1个1000万次的循环,每次循环插入1条数据,当1000万次循环全部执行结束,则插入完成!

也可以使用1条INSERT语句插入多条数据,例如:

INSERT INTO t_user (username, password, age, phone, email) VALUES
(user01, password01, 11, 13800138001, user01@qq.com),
(user02, password02, 12, 13800138002, user02@qq.com),
(user03, password03, 13, 13800138003, user03@qq.com),
(user04, password04, 14, 13800138004, user04@qq.com),
(user05, password05, 15, 13800138005, user05@qq.com),
(user06, password06, 16, 13800138006, user06@qq.com),
(user07, password07, 17, 13800138007, user07@qq.com),
(user08, password08, 18, 13800138008, user08@qq.com),
(user09, password09, 19, 13800138009, user09@qq.com),
(user10, password10, 20, 13800138010, user10@qq.com),
(user11, password11, 21, 13800138011, user11@qq.com),
(user12, password12, 22, 13800138012, user12@qq.com),
(user13, password13, 23, 13800138013, user13@qq.com),
(user14, password14, 24, 13800138014, user14@qq.com),
(user15, password15, 25, 13800138015, user15@qq.com),
(user16, password16, 26, 13800138016, user16@qq.com),
(user17, password17, 27, 13800138017, user17@qq.com),
(user18, password18, 28, 13800138018, user18@qq.com),
(user19, password19, 29, 13800138019, user19@qq.com),
(user20, password20, 30, 13800138020, user20@qq.com);

所以,可以将1000万条数据尝试以上的拼接再来执行,但是,由于拼接过长的SQL语句字符串会导致拼接时的效率非常低,所以,不可以使用1个字符串拼出1次插入太多数据的!可行的解决方案可以是:例如使用1条SQL语句插入1000条数据,并且把这样的做法循环1万次,就可以解决这个问题!

另外,还可以通过批处理解决性能问题,其核心是一次性向MySQL发送多条SQL指令,但并不直接执行,而是当发送到一定数量或满足一次条件后,再由MySQL执行多条SQL指令。

由程序将SQL指令发送到MySQL,并执行,其执行效率存在的问题可能有:

  1. 程序可能是运行在应用服务器上的,例如运行在Tomcat服务器上,而MySQL可能是专门的服务器,即程序和MySQL并不在同一台服务器上,每次需要执行SQL指令时,首先需要建立与MySQL服务器的连接,才可以将SQL指令传送到MySQL服务器,甚至,即使使用的是同一台服务器,这个连接、传送的过程依然是存在的!通过批处理的做法可以进行优化,即:只用建立1次连接,就可以传送100甚至1000甚至更多条SQL语句,从而大大的减少连接次数!

  2. 当SQL指令送达MySQL服务器后,在执行之前,还必须经过编译、解释、词法分析、语义分析等过程,才可以被执行!所以,如果使用1条SQL语句插入10条数据,肯定比循环10次却每次插入1条数据的效率要高得多!

所以,如果是1000万次的循环,每次插入1条数据,问题就出在:需要建立1000万次连接MySQL的过程,并需要在执行之前检查1000万条SQL指令!

解决方案中的第1点肯定是使用批处理的做法,减少连接次数!第2点就是使用同1条SQL指令插入多条数据,则可以减少编译、分析的次数!所以,最终的解决方案可以是循环100次,每次都是1个批处理,每个批处理中发送100条SQL指令,每个SQL指令插入1000条数据。

如何快速的将已知的1000万条数据插入到数据库中

标签:应用   完成   条件   span   one   插入   连接   mys   mysql服务器   

原文地址:https://www.cnblogs.com/cgy-home/p/11080628.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!