初识为什么要用连接池:
对于一个简单的数据库引用,用于对数据库的访问不是很频繁,这种情况可以简单的在需要访问数据库时,创建一个链接,用完关闭它,这样做不会有太明显的性能上的开销。但是对于复杂的数据库引用,情况就截然不同了,频繁的建立、关闭连接,会极大的减低系统的性能,这是对于连接的使用造成系统性能的瓶颈。
连接池的作用:
连接池的作用是为了提高性能,避免重复多次的打开数据库连接而曹诚性能的下降和系统资源的浪费;连接池是将已经创建好的连接保存在池中,当有请求来时,直接使用已经创建好的连接对数据库进行访问。这样省略了创建和销毁的过程。这样以提高系统的性能。
连接池基本原理:
1、建立数据库连接池对象(服务器启动)。
2、按照事先指定的参数创建对应初始数量的数据库连接(即空闲连接),设置连接池连接数量极值(最大活跃链接)。
3、对于一个数据库的访问请求,直接从连接池中得到一个连接。如果数据库连接池对象中没有空闲连接,且数量没有达到极值(即:最大活跃链接),创建一个新的数据库连接。
4、存取数据库。
5、关闭数据库,释放大于初始数量的空闲数据库连接。(并非真正关闭,而是将其放入空闲队列中。如实际空闲连接大于初始数量空闲连接则释放连接)。
6、释放数据库连接池对象(服务器停止、维护期间,释放数据库连接池对象,并释放所有连接)。
使用连接池的优势:
1、资源复用:由于数据库连接得到重用,避免了频繁创建、释放引起的大量性能开销。在减少系统消耗的基础上,在另一方面也增进了系统运行环境的平稳性(减少内存碎片及数据库临时进程/线程的数量)
2、更快的系统响应速度:数据库连接池在初始化过程中,往往已经创建了若干个数据库连接置于池中备用,此时连接的初始化工作均已完成。对于业务请求处理而言,直接利用现有的可用连接,避免了数据库连接初始化和释放过程的时间,从而缩减了系统整体相应时间。
3、统一的连接管理,避免数据库连接泄露:在较为完备的数据库连接池实现中,可根据预先的连接占用超时设定,强制收回被占用连接,从而避免了常规数据库连接操作中可能出现的额资源泄露。
应用连接池的三种方式:
1、自定义连接池
2、使用第三方连接池
3、使用服务器自带的连接池
解惑:
为什么频繁建立、关闭连接会降低系统的性能:数据库连接是一项有限的昂贵资源,一个数据库连接对象均对应一个物理数据库连接,每次使用都要打开一个物理连接,使用完都关闭。建立数据库连接时非常耗费资源和时间的,首先要建立TCP连接;然后TCP协议三次握手的发送与响应;客户端的账户验证,服务器返回确认;用户验证后,需要传输相关链接变量如是否自动提交事务的设置等,会有很多次的数据交互,然后才能建立连接。