1.JVM内存模型相关概念
2.Java多线程并发深入理解
3.Servlet、设计模式、SpringMVC深入理解
4.Java基础遗漏点补充
数据库连接池:JDBC connection pool,频繁的建立、关闭连接,会极大的减低系统的性能,因为对于连接的使用成了系统性能的瓶颈。连接复用。通过建立一个数据库连接池以及一些管理方法,使得一个数据库连接可以得到高效、安全的复用,避免了数据库连接频繁建立、关闭的开销。对于共享资源,有一个很著名的设计模式:资源池。该模式正是为了解决资源频繁分配、释放所造成的问题的。把该模式应用到数据库连接管理领域,就是建立一个数据库连接池,提供一套高效的连接分配、使用策略,最终目标是实现连接的高效、安全的复用。数据库连接池的基本原理是在内部对象池中维护一定数量的数据库连接,并对外暴露数据库连接获取和返回方法。外部使用者可通过getConnection 方法获取连接,使用完毕后再通过releaseConnection 方法将连接返回,注意此时连接并没有关闭,而是由连接池管理器回收,并为下一次使用做好准备。
使用数据库连接池的优势:资源重用<由于数据库连接得到重用,避免了频繁创建、释放连接引起的大量性能开销。在减少系统消耗的基础上,另一方面也增进了系统运行环境的平稳性(减少内存碎片以及数据库临时进程/线程的数量)。>更快的系统响应速度:<数据库连接池在初始化过程中,往往已经创建了若干数据库连接置于池中备用。此时连接的初始化工作均已完成。对于业务请求处理而言,直接利用现有可用连接,避免了数据库连接初始化和释放过程的时间开销,从而缩减了系统整体响应时间。>新的资源分配手段:<对于多应用共享同一数据库的系统而言,可在应用层通过数据库连接的配置,实现数据库连接池技术。某一应用最大可用数据库连接数的限制,避免某一应用独占所有数据库资源。>统一的连接管理,避免数据库连接泄漏:<在较为完备的数据库连接池实现中,可根据预先的连接占用超时设定,强制收回被占用连接。从而避免了常规数据库连接操作中可能出现的资源泄漏。一个最小化的数据库连接池实现.>
数据库的游标:游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。游标由结果集和结果集中指向特定记录的游标位置组成。主要用于循环处理结果集,有点儿像for循环。那么为什么使用游标?使用游标有什么作用?在关系型数据库中,我们查询的集合是面向集合的
而游标打破了这一规则,对于游标来说,思维方式是面向行的。而且在性能上,游标吃更多的内存,减少可用的并发,占用带宽。如果用取钱来做比喻,我们取1000元钱。SQL结果集方式是一次取1000元,而采用游标则是10次取,每此取100元。存在即合理,我们使用游标是因为,某些状况无法实现查询的时候,我们使用游标来实现。
游标的生命周期由五部分构成:定义游标、打开游标、使用游标、关闭游标、释放游标。定义游标像是在定义游标变量,有游标类型+游标变量。
//定义游标 DECLARE test //定义并赋值 DECLARE test=CUST //打开游标 OPEN test //关闭游标 CLOSE test //释放游标 DEALLOCATE test
下面是使用游标的过程,给我们的结论就是尽量使用while,子查询,临时表,函数,表变量等来替代游标。游标性能极差。尽量不要用,用完一定要释放。
数据库应用,在许多软件系统中经常用到,是开发中大型系统不可缺少的辅助。但如果对数据库资源没有很好地管理(如:没有及时回收数据库的游标(ResultSet)、Statement、连接 (Connection)等资源),往往会直接导致系统的稳定。这类不稳定因素,不单单由数据库或者系统本身一方引起,只有系统正式使用后,随着流量、用户的增加,才会逐步显露。在基于Java开发的系统中,JDBC是程序员和数据库打交道的主要途径,提供了完备的数据库操作方法接口。但考虑到规范的适用性,JDBC只提供了最直接的数据库操作规范,对数据库资源管理,如:对物理连接的管理及缓冲,期望第三方应用服务器(Application Server)的提供。
本文,以JDBC规范为基础,介绍相关的数据库连接池机制,并就如果以简单的方式,实现有效地管理数据库资源介绍相关实现技术。