- 浏览: 918425 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (445)
- 备忘 (0)
- java基础 (28)
- jsp (15)
- css (4)
- javascript (30)
- struts (7)
- servlet (2)
- struts2 (7)
- jdbc (16)
- hibernate (22)
- ibatis (0)
- jpa (1)
- spring (17)
- spring定时任务 (8)
- 整合开发 (12)
- JavaArticle (0)
- php (6)
- velocity (2)
- mysql (19)
- sqlserver (52)
- oracle (23)
- lucene (49)
- ajax (13)
- dwr (5)
- JFreeChart (1)
- service (14)
- tools (18)
- c#基础 (20)
- 程序安全 (0)
- 学习网站 (1)
- 社会需求 (2)
- flash (1)
- 流媒体 (1)
- java_code (1)
- htmlparser (1)
- 速动画教程 (5)
- 设计模式 (1)
- xml操作 (2)
- uml操作 (4)
- 测试 (1)
- linux (8)
- 版本控制 (4)
- 服务器 (12)
- 安全 (6)
- 美工 (2)
最新评论
-
Zhang_amao:
我想问一下, 你用的lucene版本和highligher的版 ...
使用Lucene的Highlighter实现文件摘要的自动提取 -
wangmengfanwangzhi:
博主,你的QQ是什么啊?有关于lucene的问题想要请教啊~~ ...
Lucene下载及测试 -
cutesunshineriver:
讲得很好,理解起来很顺,对个人学习的帮助性很大,谢谢博主。
velocity入门一 -
libin2722:
我这里有一个任务调度,在晚上3点时候会自动将数据库中某表的数据 ...
Lucene-2.2.0 源代码阅读学习(16) -
greatwqs:
java -cp $JVM_ARGS $classpath ...
java的cp命令
看下面的方法
Java代码
Connection conn = getConnection();
PreparedStatement ps = null;
try {
conn.setAutoCommit(false);
ps = conn.prepareStatement("insert into t_user(username, password) values(?,?)");
Random r = new Random();
for(int i = 0; i < 1000; i++){
ps.setString(1, String.valueOf(r.nextInt(Integer.MAX_VALUE)));
ps.setString(2, String.valueOf(r.nextInt()));
ps.executeUpdate();
[color=red]conn.commit(); //每次都提交[/color]
}
} catch (SQLException e) {
conn.rollback();
throw e;
}finally{
ps.close();
conn.close();
}
Connection conn = getConnection();
PreparedStatement ps = null;
try {
conn.setAutoCommit(false);
ps = conn.prepareStatement("insert into t_user(username, password) values(?,?)");
Random r = new Random();
for(int i = 0; i < 1000; i++){
ps.setString(1, String.valueOf(r.nextInt(Integer.MAX_VALUE)));
ps.setString(2, String.valueOf(r.nextInt()));
ps.executeUpdate();
conn.commit(); //每次都提交
}
} catch (SQLException e) {
conn.rollback();
throw e;
}finally{
ps.close();
conn.close();
}
循环每次都开启一个事务 插入一千条数据 耗时 29078 ms
Java代码
Connection conn = getConnection();
PreparedStatement ps = null;
try {
conn.setAutoCommit(false);
ps = conn.prepareStatement("insert into t_user(username, password) values(?,?)");
Random r = new Random();
for(int i = 0; i < 1000; i++){
ps.setString(1, String.valueOf(r.nextInt(Integer.MAX_VALUE)));
ps.setString(2, String.valueOf(r.nextInt()));
ps.executeUpdate();
}
conn.commit(); //只提交一次
} catch (SQLException e) {
conn.rollback();
throw e;
}finally{
ps.close();
conn.close();
}
Connection conn = getConnection();
PreparedStatement ps = null;
try {
conn.setAutoCommit(false);
ps = conn.prepareStatement("insert into t_user(username, password) values(?,?)");
Random r = new Random();
for(int i = 0; i < 1000; i++){
ps.setString(1, String.valueOf(r.nextInt(Integer.MAX_VALUE)));
ps.setString(2, String.valueOf(r.nextInt()));
ps.executeUpdate();
}
conn.commit(); //只提交一次
} catch (SQLException e) {
conn.rollback();
throw e;
}finally{
ps.close();
conn.close();
}
只开启一次事务 耗时 703 ms
但这不是推荐用法,jdbc有一个批处理方法 专门处理这种批量操作的 ps.addBatch();
Java代码
Connection conn = getConnection();
PreparedStatement ps = null;
try {
conn.setAutoCommit(false);
ps = conn.prepareStatement("insert into t_user(username, password) values(?,?)");
Random r = new Random();
for(int i = 0; i < 1000; i++){
ps.setString(1, String.valueOf(r.nextInt(Integer.MAX_VALUE)));
ps.setString(2, String.valueOf(r.nextInt()));
ps.addBatch();//加入批处理
//ps.executeUpdate();不能与addBatch()同时用
}
int[] results = ps.executeBatch();//执行批处理
conn.commit();
} catch (SQLException e) {
conn.rollback();
throw e;
}finally{
ps.close();
conn.close();
}
Connection conn = getConnection();
PreparedStatement ps = null;
try {
conn.setAutoCommit(false);
ps = conn.prepareStatement("insert into t_user(username, password) values(?,?)");
Random r = new Random();
for(int i = 0; i < 1000; i++){
ps.setString(1, String.valueOf(r.nextInt(Integer.MAX_VALUE)));
ps.setString(2, String.valueOf(r.nextInt()));
ps.addBatch();//加入批处理
//ps.executeUpdate();不能与addBatch()同时用
}
int[] results = ps.executeBatch();//执行批处理
conn.commit();
} catch (SQLException e) {
conn.rollback();
throw e;
}finally{
ps.close();
conn.close();
}
批处理方式 耗时 781 ms
跟只开启一次事务效率差不多
这里要着重指出addBatch()和executeUpdate()不要同时用否则会导致记录插入两次
本来1000条记录 会插入2000条,本人在开始就翻了这个错误
第一种方法与第二 三种方法性能差别达 40倍 看来事务真是性能杀手啊 能少开尽量少开啦
评论
发表评论
-
jdbc结果集转换成对象列表
2009-10-02 15:17 2443将jdbc结果集转换成对象列表 估计hibernate就是用得 ... -
jdbc操作参数元数据
2009-10-02 14:56 1145import java.sql.Connection;impo ... -
jdbc得到数据库的元数据
2009-10-02 14:06 1251public static void getDatabaseM ... -
ResultSet 游标控制
2009-10-02 13:40 3709之前在建立Statement或 PreparedStateme ... -
数据库分页大全
2009-10-02 13:21 885Mysql分页采用limt关键字 select * from ... -
jdbc得到插入数据的id
2009-10-01 17:36 1387//得到插入数据的id(statement还有很多关键字需要研 ... -
JDBC调用存储过程
2009-10-01 17:16 891DELIMITER $$ DROP PROCEDURE IF ... -
JDBC事务的保存点处理
2009-10-01 11:57 896在JDBC的事物处理中,可 ... -
大字段的插入
2009-09-30 20:59 1087//字符读取用read 字符读 ... -
出现的错误
2009-09-30 19:12 1082You have an error in your SQL s ... -
数据库连接类-延迟创建
2009-09-30 18:46 969import java.sql.Connection;impo ... -
数据库连接类-单例
2009-09-30 18:37 1521import java.sql.Connection;impo ... -
数据库连接类-无实例
2009-09-30 18:19 879import java.sql.Connection;impo ... -
连接不同数据库
2009-09-30 14:15 8451.MySQL(http://www.mysql.com)m ... -
jdbc出现的问题
2008-11-18 15:20 829更新数据需要commit在查询数据的时候,没有报错i,但就是无 ...
相关推荐
用pinyin4j获取拼音简码JXL读写Excl文件JDBC批处理
NULL 博文链接:https://j2ee2009.iteye.com/blog/660826
JDBC的批处理操作三种方式JDBC的批处理操作三种方式JDBC的批处理操作三种方式JDBC的批处理操作三种方式JDBC的批处理操作三种方式
JDBC基本操作,及批处理操作
讲述java中JDBC的批处理功能,讲述java中JDBC的批处理功能,讲述java中JDBC的批处理功能
对jdbc的操作进行说明,避免出现大数据读取时的报错
这个压缩包包含了传智播客方立勋老师的JDBC笔记,是比较经典的学习资料。
Java教程中阐述了接口在开发中的真正作用,JDBC规范制定的背景,JDBC编程六部曲,JDBC事务,JDBC批处理,SQL注入,行级锁等,是学习JDBC最好的Java教程。JDBC 资源太大,传百度网盘了,链接在附件中,有需要的同学...
JDBC进行批处理共4页.pdf.zip
我们可以使用addBatch()和executeBatch()方法选择标准的JDBC批处理,或者通过利用PreparedStatement对象的setExecuteBatch()方法和标准的executeUpdate()方法选择速度更快的Oracle专有的方法。要使用Oracle专有的...
这是jdbc 批处理输入大量数据到mysql的代码,应该会比较有用
JDBC 的常用API JDBC操作数据库的步骤 JDBC批处理 大数据处理 mybatis3.2数据库框架
第十二章 JDBC批处理操作批量处理允许您将相关的SQL语句分组到批处理中,并通过对数据库的一次调用提交它们。当您一次向数据库发送多个SQL语句时,可以减少连接
本套视频教程中讲解了Java语言如何连接数据库,对数据库中的数据进行增删改查操作,适合...Java教程中阐述了接口在开发中的真正作用,JDBC规范制定的背景,JDBC编程六部曲,JDBC事务,JDBC批处理,SQL注入,行级锁等。
amplecode.zip,高性能JDBC批处理操作框架.amplecode
NULL 博文链接:https://157538651.iteye.com/blog/1689291
1.数据库备份与恢复 2.多表设计(外键) 3.JDBC的体验、JDBCAPI、JDBC大数据处理、JDBC批处理。
内容为JDBC增删改查 ,事物处理, 批处理,以及预编译示例代码
JDBC批处理: addBatch executeBatch Statement PreparedStatement Statement{ 1.获取连接 getConnection(); 2.创建Statement conn.createStatement(); 3.执行sql语句 String sql .... insert delete update ...
完完全全可以用的,放心下载! 1、日期控件 ...5、jdbc 批处理 sql 6、各种数据库的分页方法 7、数据库的优化 8、海量数据的处理 9、sql 注入 10、java 设计模式 11、iBatis 使用 12、webservice 13、Hessian