mysql批量插入数据优化
hi.baidu.com/yiewgckawnlpuwe/item/80adbb9d5c263eb282d29571
mysql批量插入数据优化
100W条数据:比上次的代码性能提高了3倍。
j=2,即每2千条提交一次时间为45687ms,
j=10,即每1万条提交一次时间为40890ms
j=20,即每2万条提交一次时间为72000ms
j=100,每10万条提交一次时间为:64375ms
差不多每1万条插入一次数据,性能最高,40秒左右。
package ying;
import java.sql.*;
/*
* @author kuohao
* @Date 09-11-26
*
*/
public class sqltest {
public static void main(String[] args) {
java.util.Date now_start = new java.util.Date();
long start_time = now_start.getTime();
int st = 1000000;
String db = "com.mysql.jdbc.Driver";
String host = "jdbc:mysql://localhost:3306/nxjdf";
String user = "root";
String passwd = "12345";
Connection con = null;
try {
Class.forName(db).newInstance();
} catch (Exception e) {
System.out.println("加载驱动失败:" + db);
}
try {
con = DriverManager.getConnection(host, user, passwd);
con.setAutoCommit(false);
StringBuilder sql = new StringBuilder("");
long start = System.currentTimeMillis();
int j = 0;
for (int i = 0; i < 1000; i++) {
sql = new StringBuilder("");
sql
.append("insert into person (id,name,sex,phone,orgId) values");
for (int k = 0; k < 1000; k++) {
if (k == 999) {
sql.append("('").append(i * 1000 + k + 1).append("',")
.append("'这条记录是第=").append(i + 1)
.append("',' ").append("',' ").append("','1')");
} else {
sql.append("('").append(i * 1000 + k + 1).append("',")
.append("'这条记录是第=").append(i + 1)
.append("',' ").append("',' ")
.append("','1'),");
}
}
PreparedStatement p = con.prepareStatement(sql.toString());
p.executeUpdate();
p.addBatch();// 将一组参数添加到此 PreparedStatement 对象的批处理命令中。
j++;
if (j == 2) {
con.commit(); // 每2K条提交一次
j = 0;
System.out.println("index=" + i);
}
if (i % 200 == 0) {
p.clearBatch();// 每20w条清理一下批处理
}
con.commit();
p.close();
}
s.close();
con.close();
long end = System.currentTimeMillis();
System.out.println("manyInsert()执行时间为:" + (end - start) + "ms");
} catch (Exception e) {
e.printStackTrace();
}
}
}
总结:批量插入:insert into tableName (x,xx,xxx) values(x,xx,xxx),(xx,xxx,xxxx)…,如一次插入1000条,然后提交批处理,批量插入的引入使性能大大提高了。
相关推荐
### MySQL数据库SQL优化 #### 一、SQL优化 在MySQL数据库管理中,SQL查询的性能直接影响到系统的响应时间和资源消耗。通过合理的SQL优化,可以显著提高数据处理速度,降低服务器负载,提升用户体验。 ##### 1.1 ...
通过实际测试对比了Spring Boot中6种MySQL批量更新方式的效率,并详细记录了每种方法在处理500,1000,5000,10000,50000,100000条数据的平均时间、最小时间和最大时间。包括MyBatis-Plus提供的批量更新,JdbcTemplate...
通过实际测试对比了Spring Boot中6种MySQL批量更新方式的效率,并详细记录了每种方法在处理500,1000,5000,10000,50000,100000条数据的平均时间、最小时间和最大时间。包括MyBatis-Plus提供的批量更新,JdbcTemplate...
通过实际测试对比了Spring Boot中6种MySQL批量更新方式的效率,并详细记录了每种方法在处理500,1000,5000,10000,50000,100000条数据的平均时间、最小时间和最大时间。包括MyBatis-Plus提供的批量更新,JdbcTemplate...
以下是一些针对MySQL批量SQL插入的性能优化策略: 1. **批量插入数据** - 传统的做法是逐条插入数据,但这种方式会导致大量的SQL语句执行和日志写入,从而降低性能。优化的方式是将多条插入语句合并为一条,如示例...
1. 查询优化:编写高效的SQL语句,避免全表扫描,合理使用JOIN、子查询和UNION操作。利用EXPLAIN分析查询执行计划,找出潜在性能瓶颈。 2. 索引优化:合理创建和使用索引可以显著提升查询速度。主键索引确保数据...
对于批量操作,可以使用`executemany()`方法提高效率。 6. **提交事务**:确保所有更改都已保存,通过调用连接对象的`commit()`方法提交事务。 7. **关闭连接**:最后,记得关闭数据库连接,以释放资源。 在实际...
MySQL批量SQL插入性能优化是数据库管理员和开发人员面临的重要任务,特别是在处理大数据量的系统时。本文将深入探讨几种能够显著提升MySQL InnoDB存储引擎插入性能的方法。 首先,一种有效的优化策略是通过合并多条...
通过实际测试对比了Spring Boot中6种MySQL批量更新方式的效率,并详细记录了每种方法在处理500,1000,5000,10000,50000,100000条数据的平均时间、最小时间和最大时间。包括MyBatis-Plus提供的批量更新,JdbcTemplate...
通过实际测试对比了Spring Boot中6种MySQL批量更新方式的效率,并详细记录了每种方法在处理500,1000,5000,10000,50000,100000条数据的平均时间、最小时间和最大时间。包括MyBatis-Plus提供的批量更新,JdbcTemplate...
相比之下,创建临时表可以一次性将数据加载到内存中,然后通过SQL语句进行批量操作,从而提高处理速度。临时表适用于数据聚合、排序等操作,尤其是在需要多次访问相同数据集的情况下。创建临时表后,可以在其中进行...
本篇文章将详细讲解如何向MySQL批量导入文本文件,以便于快速有效地处理大量数据。 首先,理解文本文件导入的基本原理。在MySQL中,最常用的文本格式是CSV(Comma Separated Values,逗号分隔值)或TSV(Tab ...
本篇文章将详细讲解如何利用Python工具实现Excel数据的批量导入到MySQL数据库,以及如何优化这一过程,使得几千万的数据能够在半小时内完成导入。 首先,我们需要了解Python中用于操作Excel的主要库——pandas。...
MySQL的SQL优化是数据库管理中的重要环节,尤其对于有经验的开发者来说,了解并掌握这一技能可以显著提升数据库性能,减少资源消耗。SQL优化主要涉及查询效率、索引使用、查询语句结构优化等多个方面。 首先,理解...
- 写请求合并:采用队列处理,批量写入,减少频繁的小写操作,缓解瞬间压力。 - 大字段处理:对于超长的text或blob类型字段,可以考虑垂直拆分并预先压缩,降低存储占用。 - 冷热数据:根据LRU(Least Recently ...
通过实际测试对比了Spring Boot中6种MySQL批量更新方式的效率,并详细记录了每种方法在处理500,1000,5000,10000,50000,100000条数据的平均时间、最小时间和最大时间。包括MyBatis-Plus提供的批量更新,JdbcTemplate...
本篇将详细介绍MySQL批量插入优化及其对Sql执行效率的影响,以及通过实例解析如何实现这一优化。 批量插入(Bulk Insert)是一种提高数据插入效率的方法,它允许一次提交多条插入语句,减少了与数据库的交互次数,...
### MySQL数据库服务器优化详解 在IT领域,MySQL作为全球最流行的开源关系型数据库管理系统之一,其性能优化一直是DBA(数据库管理员)和技术人员关注的重点。本文将深入解析MySQL数据库服务器优化的关键点,涵盖...
通常,几百到几千条记录的批量操作是个不错的选择,具体值应根据硬件配置和系统负载来确定。 6. **延迟写入**: 如果数据可以暂时不立即反映到查询结果中,可以考虑使用MySQL的`LOW_PRIORITY`或`HIGH_PRIORITY`...
通过打开和编辑这些文件,你可以查看具体的SQL查询、转换逻辑以及调度设置,了解并学习如何在实际项目中应用Kettle进行多数据库的批量操作。 总之,Kettle的批量数据库操作流程脚本是数据集成中的一个重要工具,...