通过使用addBatch()和executeBatch()这一对方法可以实现批量处理数据。
手动打开mysql批量插入的开关,性能才能表现出来,大家试试就知道啦。。
加上“?useServerPrepStmts=false&rewriteBatchedStatements=true”
package com.xcfcky.demo; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; public class DbStoreHelper { private String insert_sql; private String charset; private boolean debug; private String connectStr; private String username; private String password; public DbStoreHelper() { connectStr = "jdbc:mysql://localhost:3306/db_ip"; connectStr += "?useServerPrepStmts=false&rewriteBatchedStatements=true"; insert_sql = "INSERT INTO tb_ipinfos (iplong1,iplong2,ipstr1,ipstr2,ipdesc) VALUES (?,?,?,?,?)"; charset = "gbk"; debug = true; username = "root"; password = "****"; } private void doStore() throws ClassNotFoundException, SQLException, IOException { Class.forName("com.mysql.jdbc.Driver"); Connection conn = DriverManager.getConnection(connectStr, username,password); conn.setAutoCommit(false); // 设置手动提交 PreparedStatement psts = conn.prepareStatement(insert_sql); String line = null; //开始执行时间 long begin = System.currentTimeMillis(); for(int i=0; i<500000; i++){ psts.setInt(1, i); psts.setInt(2, i); psts.setString(3, i + "ipstr1"); psts.setString(4, i + "ipstr2"); psts.setString(5, i + "ipstr3"); psts.addBatch(); // 加入批量处理 } psts.executeBatch(); // 执行批量处理 conn.commit(); // 提交 System.out.println("共用去时间" + (System.currentTimeMillis() - begin)); conn.close(); } public static void main(String[] args) throws ClassNotFoundException, SQLException, IOException{ DbStoreHelper dbsh = new DbStoreHelper(); dbsh.doStore(); } } 插入50万条数据只需要14秒,性能明显提高
在MySQL JDBC连接字符串中还可以加入参数,
rewriteBatchedStatements=true,mysql默认关闭了batch处理,通过此参数进行打开,这个参数可以重写向数据库提交的SQL语句,具体参见:http://www.cnblogs.com/chenjianjx/archive/2012/08/14/2637914.html
useServerPrepStmts=false,如果不开启(useServerPrepStmts=false),使用com.mysql.jdbc.PreparedStatement进行本地SQL拼装,最后送到db上就是已经替换了
相关推荐
经过对MySQL innodb的一些性能测试,发现一些可以提高insert效率的方法,供大家参考参考。 1. 一条SQL语句插入多条数据。 常用的插入语句如: INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) ...
经过对MySQL innodb的一些性能测试,发现一些可以提高insert效率的方法,供大家参考参考。 1. 一条SQL语句插入多条数据。 常用的插入语句如: INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `...
经过对MySQL innodb的一些性能测试,发现一些可以提高insert效率的方法,供大家参考参考。 1. 一条SQL语句插入多条数据。 常用的插入语句如: INSERT INTO `insert_table` (`datetime`, `uid`, `...
当在数据库中保存大量记录时,一次插入-而不是一个接一个地插入-可以显着提高性能。 这被广泛称为批量插入。 Gorm是最受欢迎的ORM之一,包含对开发人员非常友好的功能,但未提供批量插入。 该库旨在解决批量插入...
项目(nodejs)中需要一次性插入多笔数据到数据库,数据库是mysql的,由于循环插入的性能太差,就像使用批量插入的方法提高数据的插入性能。 批量插入的数据库的表结构如下: 1.数据库连接 var mysql = require('...
1.1.14 innodb使用多个回滚段提升性能 26 1.1.15 改善清除程序进度 26 .1.1.16 添加删除缓冲和清除缓冲 27 1.1.17 控制自旋锁spin lock轮训间隔 28 1.1.18 快速创建、删除、更改索引 29 1.1.19 innodb支持创建...
使用批量操作:对于大量数据的插入、更新或删除,使用批量操作可以减少I/O次数,提高效率。 监控和分析慢查询:开启慢查询日志,使用mysqldumpslow命令分析慢查询,找出并优化执行时间较长的SQL语句。 调整MySQL配置...
批量插入 批量更新 批量删除 批量合并 DeleteFromQuery UpdateFromQuery var context = new CustomerContext (); // ... context code ... // Easy to use context . BulkSaveChanges (); // Easy to customize ...
提高SQL的插入,更新,删除和合并性能,并克服SqlBulkCopy的限制稽核区分大小写实体数据源/ Lambda映射产值和更多...可扩展SQL Server-基准运作方式1,000行10,000行100,000行1,000,000行插6毫秒25毫秒200毫秒2,000...
当你需要在 MySQL 数据库中批量插入数百万条数据时,你就会意识到,逐条发送 INSERT 语句并不是一个可行的方法。 MySQL 文档中有些值得一读的 INSERT 优化技巧。 在这篇文章里,我将概述高效加载数据到 MySQL 数据库...
# 批量插入缓存大小, 这个参数是针对MyISAM存储引擎来说的。适用于在一次性插入100-1000+条记录时, 提高效率。默认值是8M。可以针对数据量的大小,翻倍增加。 myisam_sort_buffer_size = 1024M # MyISAM设置恢复表...
同时,它还支持连接池技术,能够有效地管理数据库连接,提高系统的性能和稳定性。 除了基本的数据库操作外,这个jar包还提供了丰富的功能扩展,包括事务管理、批量操作、数据类型映射、结果集处理等,使得开发人员...
整个系统内容都可以生成静态HTML,有效的提高了系统的性能,不仅减轻服务器的负载提高搜索收录率,增加网站收录。 支持6种html目录存放方式,您可以随心所欲的设置要生成的扩展名,一切更可能的根据您的喜好DIY...
整个系统内容都可以生成静态HTML,有效的提高了系统的性能,不仅减轻服务器的负载提高搜索收录率,增加网站收录。 支持6种html目录存放方式,您可以随心所欲的设置要生成的扩展名,一切更可能的根据您的喜好DIY...
二,Cross\DB\SQLAssembler批量插入时自动转换格式;三,REST新增对HEAD,PATCH,OPTIONS的支持;四,其他优化。附加参数的处理从Cross\Core\Application移动到Cross\Core\Router中处理;注释配置相关方法命名规范,做到...
2.1.3.1 查询结果批量插入 insert into tablea(cola,colb) select cola,colb from tableb; 2.1.3.2 创建相同的表结构并插入数据(备份表数据) create tab_new as select * from tab_old; 2.1.3.3 创建相同的表结构...
整个系统内容都可以生成静态HTML,有效的提高了系统的性能,不仅减轻服务器的负载提高搜索收录率,增加网站收录。 支持多种html目录存放方式,您可以随心所欲的设置要生成的扩展名,一切更可能的根据您的喜好DIY...