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

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

 2009-09-22 00:00:00 来源:WEB开发网   
核心提示: 输出结果:multiThreadBatchInsert()执行时间为:2437msmultiThreadBatchInsert()执行时间为:2625msmultiThreadBatchInsert()执行时间为:2703ms注意:上面我采用的是三个线程插入30w条数据,取最大时间为2703ms

输出结果:

multiThreadBatchInsert()执行时间为:2437ms
multiThreadBatchInsert()执行时间为:2625ms
multiThreadBatchInsert()执行时间为:2703ms

注意:上面我采用的是三个线程插入30w条数据。

取最大时间为2703ms,较上面的937ms,基本还是三倍的时间。

所以发现此时多线程也解决不了批量数据插入问题。原因就是,这时候的性能瓶颈不是CPU,而是数据库!

七、InnoDB引擎和MyISAM引擎的比较

最后,分析一下,这两个引擎对批量数据插入的影响。

先建立user2数据表:

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

代码:

 1Connection conn=source.getConnection();
 2        conn.setAutoCommit(false);
 3        Statement s=conn.createStatement();
 4        StringBuilder sql=new StringBuilder("");
 5        long start=System.currentTimeMillis();
 6        for(int j=0;j<100;j++)
 7        {
 8            sql=new StringBuilder("");
 9            sql.append("insert into user2 (id,name) values ");
10            for(int i=0;i<1000;i++)
11            {
12                if(i==999)
13                    sql.append("('").append(i+1).append("',").append("'cxh')");
14                else
15                    sql.append("('").append(i+1).append("',").append("'cxh'),");
16            }
17            s.execute(sql.toString());
18            conn.commit();
19        }
20        s.close();
21        conn.close();
22        long end=System.currentTimeMillis();
23        System.out.println("manyInsert2()执行时间为:"+(end-start)+"ms");

输出结果:

manyInsert2()执行时间为:3484ms

注意:第七项的代码和第五是一样的,除了数据表名称不同(user、user2)

但是,

InnoDB :3484ms

MyISAM:937ms

所以,MyISAM引擎对大数据量的插入性能较好。

总结:

对于大数据量的插入,建议使用insert into tableName (x,xx,xxx) values(x,xx,xxx),(xx,xxx,xxxx)…,的方式,引擎建议使用MyISAM引擎。

上一页  1 2 3 4 5 6 

Tags:数据库 批量 数据

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