通过使用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上就是已经替换了
相关推荐
本文将探讨Mybatis和JDBC在批量插入MySQL数据库时的性能差异,并提供相关的测试资源。 首先,JDBC(Java Database Connectivity)是Java平台中用于与数据库交互的一种规范,它允许程序员使用SQL语句直接操作数据库...
相比于单条插入,批量插入能够显著提升数据处理效率,减少数据库I/O操作,从而提高整体性能。本文将深入探讨如何利用MyBatis框架结合MySQL数据库实现批量插入功能,包括其原理、配置、代码实现以及优化策略。 ### ...
MySQL数据库在处理大量数据插入时,性能优化是至关重要的,尤其是在报表系统等需要频繁批量插入数据的应用场景。以下是一些针对MySQL批量SQL插入的性能优化策略: 1. **批量插入数据** - 传统的做法是逐条插入数据...
MySQL批量SQL插入性能优化是数据库管理员和开发人员面临的重要任务,特别是在处理大数据量的系统时。本文将深入探讨几种能够显著提升MySQL InnoDB存储引擎插入性能的方法。 首先,一种有效的优化策略是通过合并多条...
综上所述,为了提高MySQL的批量插入性能,可以采取以下策略: 1. 使用自增主键或调整业务逻辑,确保数据按顺序插入。 2. 采用多表值SQL方式,如一次插入10条记录,这通常是最佳实践。 3. 控制线程或连接的数量,保持...
例如,将多条单条插入语句改为一个包含多个值的INSERT语句,可以减少日志生成、网络传输以及SQL解析的次数,从而提升性能。 2. **使用事务进行批量插入**: - 在事务中执行批量插入可以减少单独INSERT操作带来的...
近期,我们有了大量的 MySQL 批量更新经验,总结了 MySQL 批量更新的几种方法,并进行了性能测试,旨在找到最高效的更新语句写法。 方法一:批量 Update 批量 Update 是最原始的批量更新方法,每条记录执行一次 ...
通过上述策略的组合应用,可以有效提高MySQL的批量插入性能,缩短大数据量导入的时间,提升系统整体效率。在实际应用中,需要根据具体的业务场景和数据库负载进行调整,确保优化措施既提高了性能,又不会对其他并发...
因此,"jdbc批量插入大字段"这个话题旨在探讨如何高效地通过Java JDBC来实现Blob字段的批量插入,以提高性能。 首先,我们需要了解JDBC(Java Database Connectivity),它是Java编程语言与各种数据库之间通信的...
在.NET开发中,Entity Framework(简称EF)是一个强大的对象关系映射(ORM)框架,它允许开发者使用...通过其简单的API,开发者可以轻松地集成到现有的EF项目中,实现批量插入、更新和删除,从而优化应用程序的性能。
在Java中,执行MySQL批量插入数据有多种方法,每种方法在性能上都有所不同。以下是对这些方法的详细分析: 方法1:单条插入 这是最基础的插入方式,每次循环都创建一个新的SQL语句并执行。这种方法的效率最低,因为...
在IT领域,尤其是在大数据处理中,批量插入操作是提高效率的关键步骤,尤其当涉及大量数据时,如10万条记录。本话题将深入探讨如何使用ODBC进行数据库的批量插入操作,并与单条更新操作进行对比,展示其性能优势。 ...
### MySQL批量插入数据的技术解析与实践 #### 一、引言 MySQL作为一款广泛使用的开源关系型数据库管理系统,在处理大量数据的场景下显得尤为重要。批量插入数据是提高数据处理效率的有效手段之一。本文将深入探讨...
本教程将详述如何使用Apache POI库读取Excel数据,并通过Java的JDBC接口批量插入到MySQL数据库中。Apache POI是Java平台上的一个开源项目,它允许程序员创建、修改和显示Microsoft Office格式的文件,其中包括Excel...
PreparedStatement是JDBC API中的一种预处理语句,它能够提高批量插入数据的效率。 四、JDBC连接MySQL数据库批量插入数据的步骤 1. 注册驱动:使用Class.forName()方法注册MySQL驱动。 2. 获取连接:使用...
在C#中,进行大数据批量插入到不同的数据库如SQL Server、Oracle、SQLite和MySQL是常见的需求,这可以显著提高数据处理效率。以下将详细介绍如何在这些数据库中实现批量插入。 首先,我们关注C#中一个关键接口`...
本文将深入探讨如何使用JDBC进行批量插入数据,这在处理大量数据时能显著提高性能。 批量插入数据是数据库操作中常见的一种优化策略,特别是在数据分析、数据迁移或大数据处理等场景。传统的单条插入方式可能会导致...
在C#.NET中批量插入大量数据到数据库是一个常见的任务,特别是在...通过这些方法,可以有效地提高C#.NET中批量插入大量数据到数据库的性能。同时,确保在处理大量数据时注意异常处理和数据验证,以防止数据丢失或错误。