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
此参数每次从数据库查询的数据行数,默认各个数据库不一样。如果太小可能引起过多的网络交互。
六. 设置合适的事务级别
事务的隔离级别越高,所消耗的代价越到。所以设置合适的事务级别将提供性能。
七. 使用连接池
一般操作数据库时都要获取一个连接用完后再关闭,如何将一个连接放到连接池里,用的时候拿出来,用完了放回。这样将大大提高性能。
一. 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
此参数每次从数据库查询的数据行数,默认各个数据库不一样。如果太小可能引起过多的网络交互。
六. 设置合适的事务级别
事务的隔离级别越高,所消耗的代价越到。所以设置合适的事务级别将提供性能。
七. 使用连接池
一般操作数据库时都要获取一个连接用完后再关闭,如何将一个连接放到连接池里,用的时候拿出来,用完了放回。这样将大大提高性能。
相关文章推荐
- JDBC学习笔记-----jdbc性能优化
- Oracle SQL性能优化系列学习三
- Android学习之 listview加载性能优化ViewHolder
- 了解html页面的渲染过程以备学习前端的性能优化
- hibernate性能优化学习笔记
- 脑图学习架构设计之四:性能优化
- 黑马程序员之ASP.NET学习笔记: 几个常用方法有效优化ASP.NET的性能
- MySQL学习笔记(三)性能优化1
- js-关于性能优化的一些学习总结
- IOS学习笔记45--UITableView性能优化
- Android性能优化学习篇
- java架构师、集群、高可扩展、高性能、高并发、性能优化、Spring boot、Dubbo、Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分布式项目实战学习架构师之路
- Android学习十二周_Android性能优化
- JDBC性能分析与优化
- 【慕课网_性能优化之MySQL优化_学习】【07】
- php性能优化学习笔记
- 【慕课网_性能优化之MySQL优化_学习】【01】
- Java基础学习总结(80)——Java性能优化详解
- web前端性能优化-高性能网站建设指南学习
- JDBC性能优化方案