mysql大批量插入数据的正确做法

您所在的位置:网站首页 1000条好句 mysql大批量插入数据的正确做法

mysql大批量插入数据的正确做法

2023-09-13 02:35| 来源: 网络整理| 查看: 265

MySQL插入已知的1000万条数据

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

​ 假设这1000W条数据在同一个集合里,那么将这个集合进行遍历,循环1000W次,结合数据库编程技术,如JDBC,就可以插入数据库,这么简单的操作,显然不是正确答案…

这样做的缺陷:

1.应用服务器(程序运行所在服务器)与MySQL数据库服务器并不是同一台,当需要执行数据库操作时,会由应用服务器将SQL语句发送到MySQL数据库服务器,发送过程中就需要建立网络连接,才可以发送SQL语句,则总共需要连接1000W次,效率极低。同时,每次执行SQL语句之前,MySQL服务器还会对SQL语句进行语法分析,语义分析,编译检查等才可以执行,假设最终有1000W条SQL语句,则这些过程需要耗费大量时间。 针对这个缺陷,可以使用【批处理】解决,减少连接数据库的次数,同时将单条插入语句改为一次插入多条数据以提高效率。如:

List list = findAllUser(); Statement stat = conn.createStatement(); for (User u : list) { String sql = "INSERT INTO t_user (uname,age,email) VALUE ('" +u.getUsername()+"',"+u.getAge()+",'"+u.getEmail()+"')"; stat.addBatch(sql); } stat.executeBatch(); INSERT INTO t_user (uname,upwd,age,email) VALUE ('root1','123456',15,'[email protected]'), ('root2','123456',18,'[email protected]'), ('root3','123456',26,'[email protected]'), ....

​ 当两种方法配合使用,可以使用每条SQL语句插入100条数据,批处理每次发送1000条这样的数据,共循环100次即可。 ​ 理论上来说,批处理操作不建议一次性超过【5000】,每条SQL语句根据具体需求调整,不建议超过【100】,可以调整循环次数来改善效率。

下面为测试代码:

1.测试普通插入

@Test public void testInsert() { UserDAO dao = new UserDAO(); long t1 = System.currentTimeMillis(); for(int i=0;i


【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3