WEB开发网
开发学院数据库MSSQL Server 数据库批量数据插入问题分析 阅读

数据库批量数据插入问题分析

 2009-09-22 00:00:00 来源:WEB开发网   
核心提示:在数据库的相关开发中,经常会遇到数据的批量插入问题,数据库批量数据插入问题分析,本文主要是通过实验的方式探讨批量数据插入的瓶颈,以及优化建议,以10w条记录的插入作为实验对象,采用下面的几种方法插入:1. 普通插入:普通的一条条插入2. 普通插入+手动提交:setAutoCommit(false)、commit()3.

在数据库的相关开发中,经常会遇到数据的批量插入问题。本文主要是通过实验的方式探讨批量数据插入的瓶颈,以及优化建议。

以10w条记录的插入作为实验对象,采用下面的几种方法插入:

1.       普通插入:普通的一条条插入

2.       普通插入+手动提交:setAutoCommit(false)、commit()

3.       普通插入+手动提交+ prepareStatement方式

4.       批量插入:addBatch、executeBatch

5.       批量插入:insert into tableName (x,xx,xxx) values(x,xx,xxx),(xx,xxx,xxxx)…,

6.       多线程插入。

7.       InnoDB引擎和MyISAM引擎的比较。

实验环境:

数据库:MySQL 5.0

机器硬件:

内存 3G

CPU AMD双核4400+ 2.3G

首先建立一个简单的user表:

CREATE TABLE `user` (                                         
          `id` varchar(50) NOT NULL,                                  
          `seqid` bigint(20) NOT NULL auto_increment,                 
          `name` varchar(50) NOT NULL,                                 
          PRIMARY KEY (`seqid`)
        ) ENGINE=MyISAM DEFAULT CHARSET=utf8

一、普通插入

代码:

 1Connection conn=source.getConnection();
 2Statement s=conn.createStatement();
 3String sql="";
 4long start=System.currentTimeMillis();
 5for(int i=0;i<100000;i++)
 6{
 7    sql="insert into user(id,name) value('"+(i+1)+"','chenxinhan')";
 8    s.execute(sql);
 9}
10s.close();
11conn.close();
12long end=System.currentTimeMillis();
13System.out.println("commonInsert()执行时间为:"+(end-start)+"ms");

1 2 3 4 5 6  下一页

Tags:数据库 批量 数据

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接