- 浏览: 931131 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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 2493将jdbc结果集转换成对象列表 估计hibernate就是用得 ... -
jdbc操作参数元数据
2009-10-02 14:56 1168import java.sql.Connection;impo ... -
jdbc得到数据库的元数据
2009-10-02 14:06 1280public static void getDatabaseM ... -
ResultSet 游标控制
2009-10-02 13:40 3740之前在建立Statement或 PreparedStateme ... -
数据库分页大全
2009-10-02 13:21 915Mysql分页采用limt关键字 select * from ... -
jdbc得到插入数据的id
2009-10-01 17:36 1437//得到插入数据的id(statement还有很多关键字需要研 ... -
JDBC调用存储过程
2009-10-01 17:16 921DELIMITER $$ DROP PROCEDURE IF ... -
JDBC事务的保存点处理
2009-10-01 11:57 920在JDBC的事物处理中,可 ... -
大字段的插入
2009-09-30 20:59 1110//字符读取用read 字符读 ... -
出现的错误
2009-09-30 19:12 1109You have an error in your SQL s ... -
数据库连接类-延迟创建
2009-09-30 18:46 997import java.sql.Connection;impo ... -
数据库连接类-单例
2009-09-30 18:37 1549import java.sql.Connection;impo ... -
数据库连接类-无实例
2009-09-30 18:19 912import java.sql.Connection;impo ... -
连接不同数据库
2009-09-30 14:15 8811.MySQL(http://www.mysql.com)m ... -
jdbc出现的问题
2008-11-18 15:20 851更新数据需要commit在查询数据的时候,没有报错i,但就是无 ...
相关推荐
在给定的博客链接中,可能详细解释了这些概念,并提供了示例代码来演示如何在实际应用中实现JDBC批处理。通过学习这个资源,开发者可以更好地理解和应用批处理技术,提升Java数据库应用程序的效率。
例如,如果你需要更新大量用户的数据,可以使用JDBC批处理来批量更新,减少网络通信和数据库事务处理的开销。 结合这三个技术,我们可以实现一个功能强大的系统。例如,一个基于Web的应用可能需要从用户上传的Excel...
### JDBC批处理数据 在Java开发中,JDBC(Java Database Connectivity)是一种广泛使用的数据库连接技术,它允许Java应用程序与各种类型的数据库进行交互。当处理大量数据时,使用JDBC进行有效的数据操作变得尤为...
方立勋老师的JDBC笔记还会深入到JDBC的高级特性,如JDBC批处理、连接池的使用、JNDI数据源、以及JDBC的最新版本特性等,这些都是Java开发者必须掌握的技能。通过这些笔记的学习,读者将能够熟练地使用JDBC进行数据库...
本文将详细阐述JDBC批处理的基本概念、优势以及如何在实际应用中使用。 一、批处理的概念 批处理是指一次性提交多个SQL语句到数据库进行执行,而不是逐个发送和执行。在JDBC中,批处理主要通过Statement或...
MySQL批处理是JDBC提供的一种优化数据库操作的方法,它允许开发者一次提交多个SQL语句,从而提高数据处理效率。本文将深入探讨JDBC在MySQL数据库中的应用,以及如何实现批处理操作。 首先,理解JDBC的基础知识至关...
JDBC的批处理操作三种方式JDBC的批处理操作三种方式JDBC的批处理操作三种方式JDBC的批处理操作三种方式JDBC的批处理操作三种方式
JDBC批处理的实现依赖于数据库驱动的实现,不同数据库的驱动可能会有不同的优化策略。深入研究JDBC源码,可以帮助我们理解批处理在底层是如何工作的,以及如何针对特定数据库优化性能。 ### 8. 工具支持 很多...
**JDBC批处理详解** 在Java数据库连接(Java Database Connectivity, JDBC)中,批处理是一项重要的功能,它允许开发者一次性提交多个SQL语句,从而提高数据处理的效率和性能。批处理是数据库操作中的优化手段,...
2. **事务大小**:在JDBC中,可以通过设置合适的批处理大小来平衡性能和内存消耗。在Mybatis中,批处理的大小由flushStatements()的调用频率决定。 3. **数据库配置**:如InnoDB引擎的缓冲池大小、重做日志大小等,...
10. **JDBC批处理API**: Hibernate底层使用JDBC的批处理API(Statement.addBatch()和Statement.executeBatch()),用户也可以直接使用JDBC批处理,绕过Hibernate的部分逻辑,获取更高的性能。 11. **性能优化注意...
具体而言,他描述了在不同的方法下,如使用Oracle的自定义类型定义表类型、基本类型定义表类型以及JDBC批处理(JDBCBATCH)进行10000条数据的插入,并对比了它们的效率。为了分析这个问题,我们首先需要了解相关技术...
《amplecode:高性能JDBC批处理操作框架》 在当今的IT行业中,数据库操作是许多应用程序的核心部分。高效、稳定且灵活的数据处理框架对于提升应用性能至关重要。amplecode,一个开源项目,以其高性能的JDBC批处理...
JDBC批处理 批处理可以提高性能,通过批量执行多条SQL语句。可以使用Statement对象的`addBatch()`方法添加SQL语句到批处理队列,然后通过`executeBatch()`执行。 ### 6. JDBC性能优化 - 使用PreparedStatement...
在开发过程中,还需要注意兼容性和性能优化,例如选择合适的JDBC批处理大小,使用预编译的SQL语句避免解析开销,以及正确处理异常以避免资源泄露。了解Oracle12C的JDBC驱动特性以及如何有效利用它们,对于开发高效、...
- 支持JDBC批处理,可以批量提交SQL命令,减少网络往返,提高执行速度。 - 支持JTA (Java Transaction API),实现分布式事务处理。 - 支持Unicode,可以处理多种语言字符集的数据。 - 提供了SQL Server特有的函数和...
5. **JDBC批处理**:对于大量相似的SQL语句,JDBC的批处理功能可以提高效率,减少网络传输和数据库处理的开销。 6. **PreparedStatement**:预编译的SQL语句,可以防止SQL注入攻击,并提供性能优化,尤其在重复执行...
对于Java开发者来说,使用JDBC批处理可以有效地管理与数据库的交互,尤其是在处理大量数据时,能够显著提升性能。 【标签】"sql2000+java 批处理" 指明了技术栈,即使用Java编程语言与SQL Server 2000数据库进行...
- 批量操作数据库:利用JDBC批处理功能优化数据库操作性能。 - Job多个Step的执行:Job可以包含多个Step,根据需要组合执行。 - 条件流程和流程决策:使用Flow和Decision元素创建条件分支和流程控制。 - 并发处理:...
我们可以使用addBatch()和executeBatch()方法选择标准的JDBC批处理,或者通过利用PreparedStatement对象的setExecuteBatch()方法和标准的executeUpdate()方法选择速度更快的Oracle专有的方法。要使用Oracle专有的...