`
zhoushu126
  • 浏览: 81661 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

mysql 批量操作优化(转1)

 
阅读更多

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优化

    ### MySQL数据库SQL优化 #### 一、SQL优化 在MySQL数据库管理中,SQL查询的性能直接影响到系统的响应时间和资源消耗。通过合理的SQL优化,可以显著提高数据处理速度,降低服务器负载,提升用户体验。 ##### 1.1 ...

    10万条数据下MySQL批量更新6种方式的性能测试.zip

    通过实际测试对比了Spring Boot中6种MySQL批量更新方式的效率,并详细记录了每种方法在处理500,1000,5000,10000,50000,100000条数据的平均时间、最小时间和最大时间。包括MyBatis-Plus提供的批量更新,JdbcTemplate...

    Mysql批量更新:6种方式的效率对比.zip

    通过实际测试对比了Spring Boot中6种MySQL批量更新方式的效率,并详细记录了每种方法在处理500,1000,5000,10000,50000,100000条数据的平均时间、最小时间和最大时间。包括MyBatis-Plus提供的批量更新,JdbcTemplate...

    MySQL批量更新实战:6种方式效率PK.zip

    通过实际测试对比了Spring Boot中6种MySQL批量更新方式的效率,并详细记录了每种方法在处理500,1000,5000,10000,50000,100000条数据的平均时间、最小时间和最大时间。包括MyBatis-Plus提供的批量更新,JdbcTemplate...

    MySQL批量SQL插入各种性能优化.docx

    以下是一些针对MySQL批量SQL插入的性能优化策略: 1. **批量插入数据** - 传统的做法是逐条插入数据,但这种方式会导致大量的SQL语句执行和日志写入,从而降低性能。优化的方式是将多条插入语句合并为一条,如示例...

    MySQL介绍和优化分享

    1. 查询优化:编写高效的SQL语句,避免全表扫描,合理使用JOIN、子查询和UNION操作。利用EXPLAIN分析查询执行计划,找出潜在性能瓶颈。 2. 索引优化:合理创建和使用索引可以显著提升查询速度。主键索引确保数据...

    根据excel数据批量新增或更新mysql的表

    对于批量操作,可以使用`executemany()`方法提高效率。 6. **提交事务**:确保所有更改都已保存,通过调用连接对象的`commit()`方法提交事务。 7. **关闭连接**:最后,记得关闭数据库连接,以释放资源。 在实际...

    MySQL批量SQL插入性能优化详解

    MySQL批量SQL插入性能优化是数据库管理员和开发人员面临的重要任务,特别是在处理大数据量的系统时。本文将深入探讨几种能够显著提升MySQL InnoDB存储引擎插入性能的方法。 首先,一种有效的优化策略是通过合并多条...

    springboot mysql 批量更新 springboot batch批量更新.zip

    通过实际测试对比了Spring Boot中6种MySQL批量更新方式的效率,并详细记录了每种方法在处理500,1000,5000,10000,50000,100000条数据的平均时间、最小时间和最大时间。包括MyBatis-Plus提供的批量更新,JdbcTemplate...

    从效率角度看6种MySQL批量更新方式的优劣.zip

    通过实际测试对比了Spring Boot中6种MySQL批量更新方式的效率,并详细记录了每种方法在处理500,1000,5000,10000,50000,100000条数据的平均时间、最小时间和最大时间。包括MyBatis-Plus提供的批量更新,JdbcTemplate...

    mysql存储过程优化

    相比之下,创建临时表可以一次性将数据加载到内存中,然后通过SQL语句进行批量操作,从而提高处理速度。临时表适用于数据聚合、排序等操作,尤其是在需要多次访问相同数据集的情况下。创建临时表后,可以在其中进行...

    向MySQL批量导入文本文件

    本篇文章将详细讲解如何向MySQL批量导入文本文件,以便于快速有效地处理大量数据。 首先,理解文本文件导入的基本原理。在MySQL中,最常用的文本格式是CSV(Comma Separated Values,逗号分隔值)或TSV(Tab ...

    python工具-excel批量导入mysql (几千万数据半小时可搞定)

    本篇文章将详细讲解如何利用Python工具实现Excel数据的批量导入到MySQL数据库,以及如何优化这一过程,使得几千万的数据能够在半小时内完成导入。 首先,我们需要了解Python中用于操作Excel的主要库——pandas。...

    mysql的sql优化

    MySQL的SQL优化是数据库管理中的重要环节,尤其对于有经验的开发者来说,了解并掌握这一技能可以显著提升数据库性能,减少资源消耗。SQL优化主要涉及查询效率、索引使用、查询语句结构优化等多个方面。 首先,理解...

    MySQL数据库设计、优化.pptx

    - 写请求合并:采用队列处理,批量写入,减少频繁的小写操作,缓解瞬间压力。 - 大字段处理:对于超长的text或blob类型字段,可以考虑垂直拆分并预先压缩,降低存储占用。 - 冷热数据:根据LRU(Least Recently ...

    MySQL批量更新:6种方式对比,你知道哪种最快吗?.zip

    通过实际测试对比了Spring Boot中6种MySQL批量更新方式的效率,并详细记录了每种方法在处理500,1000,5000,10000,50000,100000条数据的平均时间、最小时间和最大时间。包括MyBatis-Plus提供的批量更新,JdbcTemplate...

    MySql批量插入优化Sql执行效率实例详解

    本篇将详细介绍MySQL批量插入优化及其对Sql执行效率的影响,以及通过实例解析如何实现这一优化。 批量插入(Bulk Insert)是一种提高数据插入效率的方法,它允许一次提交多条插入语句,减少了与数据库的交互次数,...

    MySQL数据库服务器优化详细

    ### MySQL数据库服务器优化详解 在IT领域,MySQL作为全球最流行的开源关系型数据库管理系统之一,其性能优化一直是DBA(数据库管理员)和技术人员关注的重点。本文将深入解析MySQL数据库服务器优化的关键点,涵盖...

    MySQL实现批量插入以优化性能的教程

    通常,几百到几千条记录的批量操作是个不错的选择,具体值应根据硬件配置和系统负载来确定。 6. **延迟写入**: 如果数据可以暂时不立即反映到查询结果中,可以考虑使用MySQL的`LOW_PRIORITY`或`HIGH_PRIORITY`...

    kettle批量数据库操作流程脚本

    通过打开和编辑这些文件,你可以查看具体的SQL查询、转换逻辑以及调度设置,了解并学习如何在实际项目中应用Kettle进行多数据库的批量操作。 总之,Kettle的批量数据库操作流程脚本是数据集成中的一个重要工具,...

Global site tag (gtag.js) - Google Analytics