- 数据库连接池就是负责分配、管理和释放数据库连接。它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个。
- 数据库连接是一种很关键的且有限的资源,这一点在多用户的网页应用程序体现的尤为突出。一个数据库连接对象对应一个物理数据库连接。频繁的打开关闭连接会造成系统的性能低下。数据库连接池的解决方案是在应用程序启动时建立足够的数据库连接、并且将这些连接组成一个连接池(在一个“池子”里放好多半成品的数据库连接对象),由应用程序动态地对池中的连接进行申请、使用和释放。对于多于连接池中连接数的并发请求,应该在请求队列中排队等待。并且应用程序可以根据池中连接的使用率,动态增加或减少池中的连接数。 连接池技术尽可能多地重用了消耗内存地资源,大大节省了内存,提高了服务器地服务效率,能够支持更多的客户服务。通过使用连接池,将大大提高程序运行效率,同时,我们可以通过其自身的管理机制来监视数据库连接的数量、使用情况等。
-
传统的连接机制与数据库连接池的运行机制区别
- 1.Mysql
- Mysql执行流程
- TCP建立连接的三次握手
- MySQL认证的三次握手
- 真正的SQL执行
- MySQL的关闭
- TCP的四次握手关闭
优点:实现简单
缺点:网络IO较多,
数据库负载较高,
响应时间较长以及QPS较低,
应用频繁的创建连接和关闭连接,导致临时对象较多,GC频繁,
在关闭连接后,会出现大量TIME_WAIT 的TCP状态(在2个MSL之后关闭)
- 连接池
- 第一次访问的时候需要建立连接没之后访问服用之前的连接,直接执行SQL语句
- 优点 减少了网络开销
- 系统的性能有一个实质的提升
- 没了麻烦的TIME_WAIT状态
- 连接池的建立
- 连接池中连接的使用管理
- 连接池的关闭
第一 连接池在系统初始化时就会根据系统配置建立,并在池中创建了几个连接对象,一边在使用时能从连接池中获取。连接池中的连接不能随意创建和关闭,这样就避免了连接随意建立和关闭造成的系统开销
第二 连接池的管理。连接池管理策略是连接池机制的核心,连接池内连接的分配和释放对系统性能有很大的影响,其管理策略是:
当客户请求数据库连接时,首先查看连接池中是否有空闲连接,若有,则分配给用户。若没有,则查看当前池中的连接数是否已经达到上限,若没达到,则重新创建一个连接给请求的用户,如果达到就按设定的最大等待时间去等待,如果超出最大等待时间则抛出异常给用户啊。
当客户释放数据库连接时,先判断该连接的引用次数是否超过了规定值,如果超过就从连接池中删除,否则为其他用户保留该服务。
该策略保证了数据库连接的有效复用,避免频繁的建立、释放连接所带来的系统资源的开销。
第三 连接池的关闭,当应用程序退出时,关闭连接池中所有的连接,释放连接池相关的资源。
连接池的主要参数
- 最小连接数
连接池一直保持的数据库连接,如果应用程序对数据库连接的使用量不大,将会有大量的数据库连资源被浪费。 - 最大连接数
是连接池能够申请的最大连接数,如果数据库连接请求超过次数,后面的数据库连接请求将会被加入到等待队列中,这会影响以后的数据库操作。 - 最大空闲时间
- 获取连接的超时时间
- 超时重试连接次数
连接池需要注意的点
1.并发问题
2 .事务处理 一个事物独占一个连接
3.连接池的分配与释放,可以提高连接的复用度,从而建立新连接的开销,同时还可以加快用户的访问速度。