对mysql数据库批量插入数据的速度测试

来源:互联网 发布:鲁班土建软件下载 编辑:程序博客网 时间:2024/05/16 17:24

    今天,对mysql数据库的插入数据的速度做了个简单的测试。
   JdbcUtil.java

 


   SqlTest.java

 

  

背景:
   1、mysql数据库
   2、表结构为
      id varchar(10)
      name varchar(10)
   3、采用非自动提交的PrepareStatement批处理

   测试结果:
   数据量(条)   插入所需时间(ms)
     1                 0
     10                15
     100               62
     1,000             422
     10,000            2,922
     100,000           26,922
     1000,000          272,219

  

测试过程学习到的:
     1、批处理要conn.setAutoCommit(false)(默认会自动提交,不能达到批处理的目的,速度极慢!)。
     2、pstmt.executeBatch();
          conn.commit();
        要提交,数据库才会有数据。
     3、避免内存溢出,应每x(如:万)条提交一次数据。
     4、可用“数据库名.表名”的方法来访问数据库表
        这样,则在写JdbcUtil的DB_CONNECTION = "jdbc:mysql://localhost:3306/"时,
        可不具体到数据库,方便跨数据库的数据操作。
     5、Statement和PrepareStatement不仅可以操作DDL,添加删除表和数据库的sql都可以操作,用execute(String sql)方法。

原创粉丝点击