您的位置:首页 > 其它

JDBC学习2-性能优化

2011-02-23 21:04 260 查看
JDBC应用的性能涉及到数据库、服务器、数据库驱动、系统的代码书写。这里谈论第4个方面。

一. Statement还是PreparedStatement

PreparedStatement的开销比Statement大,所以PreparedStatement的速度会比Statement慢,但是PreparedStatement会缓存预编译的SQL语句,而Statement则每次都重新编译SQL语句,所以对于多次使用的SQL来说PreparedStatement的效果会好点,但是对于只使用一次的SQL语句,则Statement效果更佳。

二. 批量操作

批量操作会把SQL语句一次性发给数据库,从而减少应用于数据库服务器的交互次数提高性能,但并不减少数据库服务器的I/O次数。在使用。在使用批量操作时应该设置每批数据的大小,否则可能内存溢出,在每批执行完毕后应该先关闭Statement或PreparedStatement释放内存。

三. 使用适当的setter跟getter

使用PreparedStatement设置数据用对应的SetXxx,ResultSet用对应的getXxx,而用get/setObject性能则比较差。

四. 使用适当的ResultSet

ResultSet有:

参数 int type

ResultSet.TYPE_FORWORD_ONLY 结果集的游标只能向下滚动。

ResultSet.TYPE_SCROLL_INSENSITIVE 结果集的游标可以上下移动,当数据库变化时,当前结果集不变。

ResultSet.TYPE_SCROLL_SENSITIVE 返回可滚动的结果集,当数据库变化时,当前结果集同步改变。

参数 int concurrency

ResultSet.CONCUR_READ_ONLY 不能用结果集更新数据库中的表。

ResultSet.CONCUR_UPDATETABLE 能用结果集更新数据库中的表。

默认为:TYPE_FORWORD_ONLY跟CONCUR_READ_ONLY 此时效率最高。

五. 设置FectchSize

此参数每次从数据库查询的数据行数,默认各个数据库不一样。如果太小可能引起过多的网络交互。

六. 设置合适的事务级别

事务的隔离级别越高,所消耗的代价越到。所以设置合适的事务级别将提供性能。

七. 使用连接池

一般操作数据库时都要获取一个连接用完后再关闭,如何将一个连接放到连接池里,用的时候拿出来,用完了放回。这样将大大提高性能。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: