JDBC性能小贴

本文收集了一些用于提升JDBC性能的方法。Java应用或者JavaEE Web应用的性能是很重要的,尤其是数据库后端对应用的性能影响。不知你是否经历过Java、JavaEE web应用非常慢的案例没有(处理一个简单的请求都要花上好几秒的时间用于数据库访问,分页、排序等)。下面这些贴士也许能提升Java应用的性能。它们 非常简单同时还可以应用于其它编程语言,如果是用数据库作为后端存储的话。

这几个JDBC性能贴示不见得有多酷或者有些你从没听说过,虽然讲的很基础但是在实践中上很多程序员经常忽略它们,当然你可能把标题称为数据库性能提示。

JDBC性能贴士一:使用缓存

查出应用中有 多少数据库调用 ,然后把它们减到最少,不管你信不信性能问题大多数情况下罪魁祸首是访问数据库的那些代码。因为 连接到数据库需要准备好连接(connections),还有往返的网络传输和数据库系统后端的处理。如果你可以把数据缓存下来的话这是减少数据库调用最 好的方式,即使你的应用有完全动态的数据,短暂的缓存可以节省很大的数据苦往返的传输。加速Java应用后至少能减少20-50%的数据库调用,如果想找 出数据库调用,那么仅仅把DAO层的每个db调用中记录到日志中就行,如果记录好每个线程进入和退出数据库访问的时间更好,它能告诉你一个调用究竟花了多 少时间。

JDBC性能贴士二:使用数据库索引

检查数据库列上(columns)是否有索引,如果你正做查询发现所花的时间比预想的要长,那么首先想到的是检查在列上(正在查询的where子句 中的那列)是否做了索引。程序员中常犯这个错误,有索引和没有索引在做查询时有巨大的差异。这条贴士在性能上至少能提速100%,当然合适的索引更重要, 太多的索引反而会减慢数据的插入和更新操作。因此使用索引的时候要小心,象id、类别(category)、类(class)等字段上做索引是经常使用 的。

JDBC性能贴士三:使用PreparedStatement

使用PreparedStatement或者存储过程(Stored Procedure)执行查询时PreparedStatement(预处理语句)比普通的Statement对象要快。因为数据库可以对查询语句做预处 理何查询缓存计划。 因此总是使用 ** 参数化形式的预处理语句** 如SELECT * FROM table WHERE id=?,而不要使用SELECT * FROM table WHERE id=‘"+id "‘,虽然后者仍是一个预处理语句但不是参数化的。使用第二种查询方式在性能上没有任何优势,更多参考可以查下看JDBC为什么要使用PreparedStatement而不是Statement

JDBC性能贴士四:使用数据库连接池

连接池用来存放数据库连接(Connection),创建数据库连接是个比较慢的过程而且会耗很长时间。所以如果每个请求都要创建一个连接,那么显 然响应时间将会更长。用连接池根据上游的流量及并发请求数创建适当数量的连接。即使连接池在开始的请求中创建连接、缓存连接会比较慢,但总体还是能减不少 开销。

JDBC性能贴士五:使用JDBC批量更新

使用JDBC批量更新操作能显著提升Java数据库应用的性能。你应该始终用批量处理来执行插入和更新操作。通过使用Statment或者PreparedStatement做批量查询。用executeBatch()方法做批量查询。

JDBC性能贴士六:取消自动提交

查询时设置setAutoCommit(false),默认JDBC连接自动提交模式是打开的,意味着每个独立的SQL语句都将在自己的事务中执行。然而你可以把SQL语句按组归到一个逻辑事务中去,这样通过调用commit()rollback()要么提交要么回滚。试着运行相同数量的查询次数对比一下使用自动提交和不使用自动提交时的性能区别有多大的差异性。

这些Java数据库应用性能小提示看起来非常简单,很多高级Java程序员能熟练运用在生产级代码中,但我还看到很多Java程序员并没有在乎这 些,直到他们发现Java应用变得很慢时。所以对于新手来说有必要记住它使用它。同时你还可以使用这些Java性能小提示作为代码审查机制的一个参考,在 你写的Java应用是使用数据库作为后端存储的时候。

以上就是关于如何改善Java应用程序的性能的贴士,如果你有什么更好的提示不妨给我留言。

采集

#HUABAN_WIDGETS .HUABAN-red-normal-icon-button, .HUABAN-red-large-icon-button, .HUABAN-red-small-icon-button, .HUABAN-white-normal-icon-button, .HUABAN-white-large-icon-button, .HUABAN-white-small-icon-button { background-image: url({{imgBase}}/widget_icons_ie6.png)

时间: 2024-10-13 22:44:26

JDBC性能小贴的相关文章

JDBC性能优化方案

近期用到了利用JDBC查询Oracle数据库,但是查询效率不尽人意,研究了一下JDBC方面可以优化的地方,在这里跟大家分享一下. 1.设置最优的预取值 defaultRowPrefetch:预取条数默认值 defaultBatchValue:触发查询操作的批量请求值 这两个参数的默认值都是10,我们可以通过增加这两个参数值来减少数据库请求以提高查询效率,当然具体值大小要视具体情况而定. 2.通过连接池获取连接 创建连接的代价很大,通过连接池获取连接可省去创建连接时间. 3.选择合适的Statem

性能小贴士

性能小贴士 本文主要介绍一些代码优化方面的小贴士,结合起来使用能整体性的提升应用性能.但是,这些技巧不可能带来戏剧性的性能改变.合适的算法和数据结构是解决性能的首选考虑(还有程序的执行流程优化),但这已经脱离了本文的范畴. 本文介绍的小贴士是每个有追求的程序员应有的编码习惯. 关于如何写出高效的代码,这里有两个基本的原则: Don't do work that you don't need to do Don't allocate memory if you can avoid it 面临的现状

HTTP性能小测试

一直说node.js如何如何好,就来测试一下吧~~ 首先接受一个小工具 Apache Bench简称ab 可以用来测试http性能 利用Apache Bench测试Web引擎性能关于此工具的详细介绍参考一下链接: http://www.kwx.gd/CentOSApp/CentOS-Apache-Bench.html 反正我的没有专门去安装它,应该是apache附带有的吧.... Apache的ab的用法是:ab [options] [http://]hostname[:port]/pathab

tomcat_配置jdbc(小例)

原创作品,出自 "深蓝的blog" 博客,深蓝的blog:http://blog.csdn.net/huangyanlong/article/details/47043975 tomcat下配置jdbc举例 使用tomcat手工配置jdbc时,一般会到应用下面的webapps中的"应用名称\WEB-INF\classes"文件夹中找到jdbc.properties文件. 然后根据样例配置jdbc即可,下面举一个例子:某java程序使用三用户方式访问各用户数据的系统,

Java性能小技巧

局部决定总体. 一个应用的总体性能取决于每一个组件的性能. 以下是一些帮助你提高应用性能的Java编程技巧: 编程技巧 原因及策略 避免反复创建对象 为什么: 更少的对象会须要更少的垃圾回收 使用的空间越少,应用的性能越好 怎么做: 反复利用一个对象,而不是在每次须要的时候都去创建一个功能一样的对象 (这样做) String s = "No longer silly"; (不要这样) String s = new String("silly"); 不可变类中既提供构

SAP CRM 性能小技巧

导言 本页面打算收集SAP CRM实施中可以用于避免性能问题的注意事项,重要的事项会由图标标识. 如果你有其他的技巧想要说出来,别犹豫! 性能注意事项 通用 缓存读取类访问,特别是在性能关键的地方,比如字段检查,这时要避免数据库查询. 尝试把所有的东西放在同一个CRM_ORDER_MAINTAIN调用当中,以避免不必要的开销.编辑多文档的时候也是一样,需要被替换为一个调用. 不要无限制地使用SAP内部API,比如,只读取需要的数据就可以,而不是整个业务. 总是把性能放在心上,特别是在实现经常被调

atomikos 优化JDBC性能

JDBC performance comes for free with our pooling DataSource classes: AtomikosDataSourceBean for XA-enabled JDBC, and AtomikosNonXADataSourceBean for non-XA enabled JDBC However, you do need to make sure that you respect the following guidelines: Clos

JDBC与Hibernate的区别

相同点: ◆两者都是JAVA的数据库操作中间件. ◆两者对于数据库进行直接操作的对象都不是线程安全的,都需要及时关闭. ◆两者都可以对数据库的更新操作进行显式的事务处理. 不同点: ◆使用的SQL语言不同:JDBC使用的是基于关系型数据库的标准SQL语言,Hibernate使用的是HQL(Hibernate query language)语言 ◆操作的对象不同:JDBC操作的是数据,将数据通过SQL语句直接传送到数据库中执行,Hibernate操作的是持久化对象,由底层持久化对象的数据更新到数据

jdbc与hibernate的优缺点比较

jdbc与hibernate的优缺点比较 一. Hibernate是JDBC的轻量级的对象封装,它是一个独立的对象持久层框架,和App Server,和EJB没有什么必然的联系.Hibernate可以用在任何JDBC可以使用的场合,例如Java应用程序的数据库访问代码,DAO接口 的实现类,甚至可以是BMP里面的访问数据库的代码.从这个意义上来说,Hibernate和EB不是一个范畴的东西,也不存在非此即彼的关系. 二.Hibernate是一个和JDBC密切关联的框架,所以Hibernate的兼