当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:13:00  来源:本站整理

<b>JDBC优化战略总结</b>[Java编程]

赞助商链接



  本文“<b>JDBC优化战略总结</b>[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

相比Hibernate、iBatis、DBUtils等,理论上JDBC的性能都超越它们.JDBC供应更底层更精密的数据拜候战略,这是Hibernate等框架所不具有的.

在一些高性能的数据操作中,越高级的框架越不合适利用.这里是我在开辟中对JDBC利用历程中一些优化经验总结.

1、挑选纯Java的JDBC驱动.

2、利用衔接池--利用一个“池”来管理JDBC衔接,并尽心调试池配置的参数,目前可用的数据库衔接池很多很多.

若何配置符合的参数呢,需求的是测试,而不是感受.

3、重用Connection--最大限度利用每个数据库衔接,得到了就不要简单“丢弃”.

有时刻在一个历程中,会多次操作数据库,而仅仅需求一个衔接就够了,没必用一次就获得一个衔接,用完后关闭大概入池.这样会增添“池”管理的本钱,千万别认为你用了“池”便可以随便申请和偿还衔接,都是有代价的.假如是一个宏大循环块中操作数据库,更应当注意此问题!

4、重用Statement--关于一些预定义SQL,设置为静态常量,并尽大概重用预定义SQL产生的PreparedStatement对象.关于多次利用一种情势的SQL,利用预定义SQL可以获得更好的性能.

5、利用批处理SQL.

6、优化后果集ResultSet--查询时刻,返回的后果集有差别的范例,优先挑选只读后果集、不可转动的属性.

这里是很简单呈现问题的地方:

java.sql.ResultSet

static int CLOSE_CURSORS_AT_COMMIT
                     该常量指导调用 Connection.commit 办法时应当关闭 ResultSet 对象.
static int CONCUR_READ_ONLY
                     该常量指导不可以更新的 ResultSet 对象的并发情势.
static int CONCUR_UPDATABLE
                     该常量指导可以更新的 ResultSet 对象的并发情势.
static int FETCH_FORWARD
                     该常量指导将按正向(即从第一个到最后一个)处理后果集合的行.
static int FETCH_REVERSE
                     该常量指导将按反向(即从最后一个到第一个)处理后果集合的行处理.
static int FETCH_UNKNOWN
                     该常量指导后果集合的行的处理次序未知.
static int HOLD_CURSORS_OVER_COMMIT
                     该常量指导调用 Connection.commit 办法时不该关闭 ResultSet 对象.
static int TYPE_FORWARD_ONLY
                     该常量指导指针只能向前移动的 ResultSet 对象的范例.
static int TYPE_SCROLL_INSENSITIVE
                     该常量指导可转动但普通不受其他的更改影响的 ResultSet 对象的范例.
static int TYPE_SCROLL_SENSITIVE
                     该常量指导可转动并且普通受其他的更改影响的 ResultSet 对象的范例.

阐明下:

后果集分两种范例:只读和可更改,只读的话,更省内存,查询的后果集不能更改.假如后果集在查询后,更改了值又要保存,则利用可更改后果集.

后果集的游标也有两种范例:假如没必要让游标安闲转动,则挑选单方向移动的游标范例.

关于能否并发操作:假如不需求考虑线程安全,则挑选忽视并发的后果集范例,不然挑选并发安全的范例.

别的,还要掌握后果的大小,几近全部的数据库都有查询记录条数掌握的战略,可以海量数据举行分批处理,一次一批,这样不至于把系统搞死.

7、事物优化--假如数据库不支持事物,就不要写回滚代码,假如不考虑事物,就不要干事件的掌握.

8、安全优化--管理好你的Connection对象,在非常时刻能“入池”大概关闭.因此应当将Connection释放的代码写在非常处理的finally块中.

9、非常处理优化--不要简单吞噬SQLException,关于DAO、Service层次的数据拜候,普通在DAO中跑出非常,在 Service中处理非常.但DAO中也可以处理非常,并做转义抛出,不要随便抛出RuntimeExeption,因为这是JVM抛出的,不需求你可以去抛出,因为RuntimeException常常会招致系统挂起.

10、代码高层优化--在以上的底子上,优化封装你的数据拜候方法,尽大概让代码简便好保护,假如你还认为性能不行,那就该从整个系统角度考虑优化了,比方加上缓存服务器,集群、负载均衡、优化数据库服务器等等,以获得更好的系能.

出处:http://lavasoft.blog.51cto.com/62575/225828


  以上是“<b>JDBC优化战略总结</b>[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .