总是使用框架等等,都是封装好的操作,好久没用JDBC直接操作了;
今天没事测试了一下Batch和直接操作差别有多大;
仅是简单对比而已罢了:
不说了看结果...
@Test
public void testJDBCBatch() throws Exception{
final ApplicationContext ac=
new ClassPathXmlApplicationContext("pdsu/zhang/jdbcAopDemo/applictionContext.xml");
// CallBack
CountTime.getTime(new Handle(){
public void handler() throws Exception {
Connection con=ac.getBean("datasource", DataSource.class).getConnection();
con.setAutoCommit(false); // 不设置 false 1000运行耗时:703ms :672ms
PreparedStatement stmt = con.prepareStatement("INSERT INTO student VALUES (?, ?)");
for(int i=1;i<100000;i++){ // 循环本身 运行耗时:94ms
stmt.setString(1, "zhangNo."+i);
stmt.setString(2, "123");
//stmt.executeUpdate();//100运行耗时:109ms 1000运行耗时:657ms : 672ms
stmt.addBatch(); //100运行耗时:32ms 1000运行耗时:250ms : 219ms
}
stmt.executeBatch(); con.commit();
// 10000运行耗时:1203ms 100000运行耗时:9406ms
con.close();
}
});
}
class CountTime {
public static void getTime(Handle handle) throws Exception {
long start =System.currentTimeMillis();
handle.handler();
long end =System.currentTimeMillis();
System.out.println("运行耗时:"+(end-start)+"ms");
}
}
interface Handle{
public void handler() throws Exception;
}
下面是简单写了通用计时器;
可见10000条记录运行耗时:1203ms 100000条运行耗时:9406ms
明显看出耗时比例3:1还大,批量10万条时耗内存一两百M吧;但是和数据库的操作简单利索啊。
下面看一个更有意思的:
@Test
public void testJDBCBatch2() throws Exception{
final ApplicationContext ac=
new ClassPathXmlApplicationContext("pdsu/zhang/jdbcAopDemo/applictionContext.xml");
CountTime.getTime(new Handle(){
public void handler() throws Exception {
Connection con=ac.getBean("datasource", DataSource.class).getConnection();
con.setAutoCommit(false);
PreparedStatement stmt = con.prepareStatement("INSERT INTO student VALUES (?, ?)");
for(int i=1;i<10000;i++){
stmt.setString(1, "zhangNo."+i);
stmt.setString(2, "123");
stmt.addBatch();
} stmt.executeBatch();
stmt.clearBatch();
for(int i=1;i<10000;i++){
stmt = con.prepareStatement("update student set pwd=?");
stmt.setString(1, i+"");
stmt.addBatch(); // 运行耗时:2422ms
}
stmt.executeBatch();// 或者 executeUpdate()都行
stmt = con.prepareStatement("update student set pwd=? where name='zhang' ");
stmt.setString(1, "123");
stmt.executeUpdate();
con.commit();
con.close();
/**操作 批量同统一提交 单个统一提交 单个直接提交
*1000条 运行耗时:391ms/437ms 运行耗时:8375ms 运行耗时:14969ms
* 10K 运行耗时:3171ms
*/
}
});
}
对比一下子吧,测试10K的时候我实在不愿意等了...
呵呵,没事闲侃吧
分享到:
相关推荐
Mybatis与JDBC批量插入MySQL数据库性能测试,资源包含文档、代码和数据库。
一、JDBC的批量插入 一、JDBC的批量更新 一、JDBC的批量删除 一、JDBC的批量修改
jdbc批量操作数据分析与实例,主要是通过实际可执行的例子来说明批量操作与一条条数据插入的实际性能,并做了相应的分析
JDBC批量处理问题~~提高更新处理速度~~
针对oracle中blob字段的操作,能批量快速的插入大字段,效率非常高
jdbc的三种批量 不要错过,下载后绝不后悔
JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单...
JDBC连接数据库测试JDBC连接数据库测试JDBC连接数据库测试JDBC连接数据库测试JDBC连接数据库测试JDBC连接数据库测试JDBC连接数据库测试JDBC连接数据库测试JDBC连接数据库测试JDBC连接数据库测试JDBC连接数据库测试...
sqljdbc和测试jdbc连接类sqljdbc和测试jdbc连接类
文章地址:...Java-JDBC【之】批量插入操作、优化取消自动提交(提速40+倍) 1.JDBC批量操作 2.两种实现方式 3.优化,取消自动提交 4.完整源码 《目录:Java-JDBC学习(编写中...)》 《幕》
JPA JDBC hibernate mybatis对比,里面从官方例子比较详细对比说明,从开发效率,crud执行效率等各种维度上做对比分析
JDBC对数据库进行操作的小例子,包括增、删、改、查。
NULL 博文链接:https://sunfish.iteye.com/blog/1455357
一段很简单的代码用于测试jdbc for mysql的连通。 提供:jdbc for mysql的安装包。和jdbc for mysql 的jar包。 至:wab168@163.com
测试JDBC跟数据库建立连接、测试Statement接口的用法,执行SQL语句,以及SQL注入问题、测试ResultSet结果集的基本用法等等。
测试JDBC与数据库的连接以及SQL注入
Java-JDBC【源码】数据库连接池技术、常规操作与Durid对比、测试(20-200)不同连接数下,10万记录,1万并发,CPU磁盘占用情况 1.数据库连接池 2.Durid介绍(官方文档) 3.编码,问题,常规并发操作 3.1.JDBCUtil....
主要为大家详细介绍了java实现jdbc批量插入数据,三种JDBC批量插入编程方法进行比较,感兴趣的朋友可以参考一下
JDBC驱动和测试代码
有些时候不知道JDBC 和SQL是否已经正常连接 使用该代码就可以测试了