- 浏览: 52932 次
文章分类
最新评论
对JDBC 的 CRUD操作,我相信对于每个开发人员来讲,是十分熟悉的,尤其是在小型公司的开发人员来讲,大部分的工作也就是这些了。但是对于一个大型系统而言,简单的CRUD是无法存活下来的,因为它的数据量极大,不是简单的几千条,几万条,有时基本在几十万条,甚至几百万条数据量。
之前我们的业务也没有太多,简单的生成订单就是普通的insert操作,有一次发现,操作一个2w条的订单数量,前后花费的时间要15分钟,这个让我有点失望。2w的数据量真的不太大,为什么这么慢呢?当然系统中还有其它的操作存在,不至于这么点的数据量让mysql撑不住了。
原理其实也很简单,每insert一条记录,需要记录下log等一系列的日志操作,这些都是要消费时间的。如果批量提交的话,则会只发送一次的请求。这就是批量提交与普通的提交的差别了。
但是要使用好批量提交操作,有几点还是要注意的。
1. 批量提交的次数,不是几十万条数量一股脑儿的提交上去了,一般是分段提交,每一段提交个1000条数据量,同一段的生成一个UUID记录;
2. 使用批量提交可以直接写事务,
这样写,没有问题,事务里面默认会把所有batch里的操作当成一个整体去提交。
3. 如果你没有在事务中写,很可惜,批量的操作会当成普通的操作了,此时你需要在连接的
时候去加一个参数:
以上就是记录JDBC 批量操作的方法和注意事项。
之前我们的业务也没有太多,简单的生成订单就是普通的insert操作,有一次发现,操作一个2w条的订单数量,前后花费的时间要15分钟,这个让我有点失望。2w的数据量真的不太大,为什么这么慢呢?当然系统中还有其它的操作存在,不至于这么点的数据量让mysql撑不住了。
原理其实也很简单,每insert一条记录,需要记录下log等一系列的日志操作,这些都是要消费时间的。如果批量提交的话,则会只发送一次的请求。这就是批量提交与普通的提交的差别了。
但是要使用好批量提交操作,有几点还是要注意的。
1. 批量提交的次数,不是几十万条数量一股脑儿的提交上去了,一般是分段提交,每一段提交个1000条数据量,同一段的生成一个UUID记录;
2. 使用批量提交可以直接写事务,
connection.setAutoCommit(false); psmt.addBatch(); psmt.executeBatch(); connection.commit();
这样写,没有问题,事务里面默认会把所有batch里的操作当成一个整体去提交。
3. 如果你没有在事务中写,很可惜,批量的操作会当成普通的操作了,此时你需要在连接的
时候去加一个参数:
rewriteBatchedStatements=true
以上就是记录JDBC 批量操作的方法和注意事项。
发表评论
-
Java IO 读文件的各种方法总结
2016-01-01 15:00 697IO分为字节流和字符流,字符就是简单的字符串存储,从理伦上讲, ... -
动态代理的应用
2015-12-22 17:30 732代理模式作为开发人员 ... -
Java Restful
2015-12-19 14:01 440对于两个系统之间交互信息,有两种常见的方式:webservic ... -
request.getInputStream() 只能读一次的解决方法
2015-12-17 12:17 2377我们知道request.getInputStream()只能读 ... -
java Hessian 版本冲突问题解决方法
2015-12-11 19:44 865今天在实际的项目发现了一个问题就是hessian的版本不兼容的 ... -
ThreadPoolExecutor参数讲解
2015-12-10 08:14 8171. 线程池可以节省创建多个线程带来的开销问题。 2. 线程 ... -
Java RSA 加密 解密 签名 验签
2015-12-09 10:01 61471. 加密的作用 1)明文变密文(你不知道密钥是很难解密的) ... -
Java Xstream xml 与bean之间的转换
2015-12-09 08:31 746xml文件如下: <mvc> & ... -
XPATH 解析XML
2015-12-09 08:28 4341. 表达式描述 nodename 选取此节点的所有子节 ... -
Java Dom4j 解析XML
2015-12-09 08:23 365Dom4j和JDom是很相似的,用起来十分方便。 XML文件 ... -
Java JDom 解析xml
2015-12-09 08:22 416JDOM在解析XML在代码量之上比之前的方法(DOM和SAX要 ... -
Java SAX 解析xml
2015-12-08 18:13 420在上一篇中http://gaofulai1988.iteye. ... -
Java XML解析系列
2015-12-08 18:00 752Java解析XML有多种方式,因此需要分为几个不同的系列来讲。 ... -
Java 背包算法计算从数组中找若干个数使其最接近某个数
2015-12-08 17:38 1988背包的算法的动态方式如下: f(i,w) = max{ f(i ... -
C3P0 连接分析
2015-12-01 19:05 892最近在看C3P0的原理,还是将C3P0的源码导入到Ecplis ... -
微信开发的原理
2015-11-30 10:10 1318微信在现在的生活中,扮演着举足轻重的角色,现在怎么东西都在微信 ... -
JAVA Timestamp 与Data的转化以及BigDecimal 保留两位小数
2015-11-27 14:47 17021. BigDecimal 保留两位小数 今天在项目中遇到这 ... -
java try catch finally return 继续
2015-11-27 13:45 402之前在博客中有一篇文章讨论过异常中return值的情况,有兴趣 ... -
Java WeakHashMap 分析
2015-11-26 08:17 620昨天在我们的系统中看 ... -
加密与解密
2015-11-18 18:12 481我本身不是学密码出身的,但在工作中经常要使用加密与解密的东东, ...
相关推荐
### JDBC批量操作详解 #### 一、JDBC批量插入 JDBC(Java Database Connectivity)是Java平台中用来标准地连接数据库的技术。通过JDBC,Java应用程序可以与多种类型的数据库进行交互,实现数据的读取、写入等功能...
首先,我们需要了解JDBC的批量操作接口。`java.sql.Statement`和`java.sql.PreparedStatement`接口都提供了批量处理的方法。批量处理主要通过`addBatch()`方法添加SQL语句到批处理队列,然后通过`executeBatch()`...
在 JDBC 中,批量处理语句包括两个方法:addBatch(String) 和 executeBatch()。addBatch(String) 方法用于添加需要批量处理的 SQL 语句或参数,而 executeBatch() 方法用于执行批量处理语句。 使用 JDBC 批量处理...
首先,JDBC(Java Database Connectivity)是Java平台中用于与数据库交互的一种规范,它允许程序员使用SQL语句直接操作数据库。在批量插入场景下,JDBC提供了Statement对象的addBatch()和executeBatch()方法,可以将...
如果在批量操作中发生错误,整个事务可以回滚,避免了部分插入的数据不一致问题。 - **使用Oracle特定的Blob处理**:Oracle提供了`oracle.sql.BLOB`类,它具有更高级别的功能,如直接从文件系统读写Blob,可以减少...
本篇文章将详细介绍如何使用Java实现JDBC批量插入数据,并比较三种常见的JDBC批量插入编程方法。 **方法一:使用PreparedStatement加批量的方法** PreparedStatement是Statement的子接口,允许预编译SQL语句,这...
本文主要介绍了Java实现批量向mysql写入数据的方法,该方法涉及Java基于JDBC连接mysql数据库及写入数据的相关操作技巧。JDBC(Java Database Connectivity)是Java语言中用于连接数据库的API,提供了多种数据库的...
### JDBC批量操作详解:效率与性能的提升策略 在数据库操作中,批量处理是一种常见的优化技术,用于提高数据处理的效率和性能。JDBC(Java Database Connectivity)作为Java应用程序与数据库交互的标准API,提供了...
6. **批量操作**:当有大量数据要插入或更新时,使用预编译的PreparedStatement的`addBatch()`和`executeBatch()`方法可以提高效率。 7. **错误处理**:处理SQLException,这可能由于网络问题、数据库无响应或无效...
【IT十八掌徐培成】Java基础第23天的课程主要聚焦在JDBC操作数据库时的批量处理技术,特别是`addBatch`和`executeBatch`这两个关键方法。在Java中,当我们需要对数据库进行大量数据的插入、更新或删除操作时,传统的...
在Java编程中,批量操作数据库可以显著提高程序的性能,特别是在处理大量数据时。Oracle作为一款广泛应用的关系型数据库管理系统,其与Java的结合是企业级开发中的常见实践。本篇文章将详细探讨如何使用Java来实现...
在这个名为“javaJDBC.rar_jdbc”的压缩包中,我们有两个文件:www.pudn.com.txt和example。虽然没有提供具体的文件内容,但我们可以根据文件名和描述来推测其可能包含的知识点。 1. **Java JDBC API基础**: - **...
6. **批量操作和性能优化**: - JDBC支持批量处理SQL语句,可以提高性能,例如使用`addBatch()`和`executeBatch()`方法。 - 使用PreparedStatement可以防止SQL注入攻击,并提高查询效率。 7. **事务管理**: - ...
10. **最佳实践**:源码可能还会包含一些最佳实践,比如使用`PreparedStatement`而非`Statement`,及时关闭数据库连接,以及在可能的情况下使用批量操作等。 通过学习和理解这些源码,开发者可以更好地理解和掌握...
JDBC API提供了`Statement`和`PreparedStatement`接口的`clearBatch()`方法,用于清除当前批量操作中的所有语句,以及`Connection`接口的`createStatement()`和`prepareStatement()`方法,用于创建`Statement`和`...
1. **批量更新**:`Statement`对象提供了`addBatch()`方法添加SQL语句到批处理队列,然后调用`executeBatch()`一次性执行所有语句。 2. **批处理优化**:对于大量重复的操作,批处理可以显著提升性能,减少网络通信...
4. **事务管理**:对于批量操作,建议在事务中进行,以保证数据的一致性和完整性。 #### 五、扩展阅读 - **JDBC规范文档**:了解JDBC接口和方法的详细说明。 - **数据库官方文档**:查看所使用数据库对批量执行的...
8. **批处理**:`Statement`接口的`addBatch()`和`executeBatch()`方法用于批量执行SQL语句,提高性能。 9. **连接池**:在实际应用中,为提高性能和资源利用率,通常使用连接池管理数据库连接。如C3P0、Apache ...