首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

sqlserver 批量安插数据的速度和驱动相关

2012-11-06 
sqlserver 批量插入数据的速度和驱动相关今天对sqlserver的批量插入进行了一下简单的测试发现用 msbase.ja

sqlserver 批量插入数据的速度和驱动相关
今天对sqlserver的批量插入进行了一下简单的测试
发现用 msbase.jar mssqlserver.jar msutil.jar 这3个包做驱动的时候,批量插入(5000一批,分多批)和一条条的插入速度上没有明显差异,插入37万条数据居然要12分钟的时间,当换用sourceforge上的jtds.jar这个驱动后,速度有了飞速的提高,同样是37万条数据,居然只要一分钟.微软官方的驱动也太随意了吧,怎么连jdbc的标准都不好好实现,晕!

public void insert2DicIPLoc(List list){                Connection conn = null;PreparedStatement pstmt = null;try {                    connn = DBUtil.getConnection();    pstmt = conn.prepareStatement(INSERT_SQL);    IpLocation ipLocation = null;    long start = System.currentTimeMillis();    for(int i = 0; i < list.size(); i++){    ipLocation = (IpLocation)list.get(i);    pstmt.setLong(1, ipToLong(ipLocation.getIpFr()));pstmt.setLong(2, ipToLong(ipLocation.getIpTo()));pstmt.setString(3, ipLocation.getLoca1());pstmt.setString(4, ipLocation.getLocal2());pstmt.addBatch();    }    long end = System.currentTimeMillis();    System.out.println("addBatch耗时:"+(end - start)+"ms");pstmt.executeBatch();conn.commit();long end2 = System.currentTimeMillis();System.out.println("executeBatch耗时:"+(end2 - end)+"ms");} catch (SQLException e) {e.printStackTrace();}finally{DBUtil.close(this, conn);                        DBUtil.close(this,pstms);}}

每批为一万条数据
jtds 驱动,测试结果为:
addBatch耗时:260ms
executeBatch耗时:981ms

msbase.jar mssqlserver.jar msutil.jar驱动 测试结果为:
addBatch耗时:281ms
executeBatch耗时:15932ms
1 楼 sunway00 2009-10-14   sql2000的驱动有问题不是什么秘密了. 我一般都用2005 的驱动.

热点排行