数据库连接池参数

  • 格式:docx
  • 大小:38.49 KB
  • 文档页数:3

数据库连接池参数

数据库连接是一种关键的、有限的、昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。数据库连接池正是针对这个问题提出来的。

数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中,这些数据库连接的数量是由最小数据库连接数制约。无论这些数据库连接是否被使用,连接池都将一直保证至少拥有这么多的连接数量。连接池的最大数据库连接数量限定了这个连接池能占有的最大连接数,当应用程序向连接池请求的连接数超过最大连接数量时,这些请求将被加入到等待队列中。数据库连接池的最小连接数和最大连接数的设置要考虑到下列几个因素:

1. 最轻连接数

是连接池一直保持的数据库连接,所以如果应用程序对数据库连接的使用量不大,将会有大量的数据库连接资源被浪费。

2. 最小连接数

是连接池能申请的最大连接数,如果数据库连接请求超过此数,后面的数据库连接请求将被加入到等待队列中,这会影响之后的数据库操作。

3. 最轻连接数与最小连接数差距

最小连接数与最大连接数相差太大,那么最先的连接请求将会获利,之后超过最小连接数量的连接请求等价于建立一个新的数据库连接。不过,这些大于最小连接数的数据库连接在使用完不会马上被释放,它将被放到连接池中等待重复使用或是空闲超时后被释放。

连接池基本的思想就是在系统初始化的时候,将数据库相连接做为对象存储在内存中,当用户须要出访数据库时,并非创建一个代莱相连接,而是从连接池中抽出一个已创建的空闲相连接对象。采用完后,用户也并非将相连接停用,而是将相连接摆回去连接池中,以供下一个命令出访采用。而相连接的创建、断裂都由连接池自身去管理。同时,还可以通过设置连接池的参数去掌控连接池中的起始连接数、相连接的上时上限数以及每个相连接的最小采用次数、最小空闲时间等等。也可以通过其自身的管理机制去监控数据库相连接的数量、采用情况等。

在java中开源的数据库连接池有以下几种 :

1、c3p0:就是一个对外开放源代码的jdbc连接池,它在lib目录中与hibernate一起公布,包含了同时实现jdbc3和jdbc2拓展规范表明的connection 和statement 池的datasources 对象。 2、proxool:是一个java sql driver驱动程序,提供了对选择的其它类型的驱动程序的连接池封装。可以非常简单的移植到现存的代码中,完全可配置,快速、成熟、健壮。可以透明地为现存的jdbc驱动程序增加连接池功能。

3、jakarta dbcp:dbcp就是一个倚赖jakartacommons-pool对象池机制的数据库连接池。dbcp可以轻易的在应用程序中采用。

4、ddconnectionbroker:是一个简单、轻量级的数据库连接池。

5、dbpool:就是一个高效率、极易布局的数据库连接池。它除了积极支持连接池理应的功能之外,还包括了一个对象池,并使用户能研发一个满足用户自己市场需求的数据库连接池。

6、xapool:是一个xa数据库连接池。它实现了javax.sql.xadatasource并提供了连接池工具。

7、primrose:就是一个java研发的数据库连接池。当前积极支持的容器包含tomcat4&5、resin3与jboss3。它同样也存有一个单一制的版本,可以在应用程序中采用而不必运转在容器中。primrose通过一个webUSB去掌控sql处置的跟踪、布局,以及动态池管理。在轻负荷的情况下可以展开相连接命令队列处置。

8、smartpool:是一个连接池组件,它模仿应用服务器对象池的特性。smartpool能够解决一些临界问题如连接泄漏(connection leaks)、连接阻塞、打开的jdbc对象(如statements、preparedstatements)等。smartpool的特性包括:

积极支持多个pool

自动关闭相关联的jdbc对象

在所预设time-outs之后察觉到相连接外泄

追踪连接使用情况

强制性投入使用最近最少使用的相连接

把smartpool“包装”成现存的一个pool

9、miniconnectionpoolmanager:就是一个轻量级jdbc数据库连接池。它只须要java1.5(或更高)并且没倚赖第三方纸盒。

10、bonecp:是一个快速、开源的数据库连接池。帮用户管理数据连接,让应用程序能更快速地访问数据库。比c3p0/dbcp连接池速度快25倍。

11、druid:druid不仅就是一个数据库连接池,还涵盖一个proxydriver、一系列内置的jdbc组件库、一个sql parser。 支持所有jdbc兼容的数据库,包括oracle、mysql、derby、postgresql、sql

server、h2等。

druid针对oracle和mysql搞了特别优化,比如说:

oracle的ps cache内存占用优化

mysql的ping检测优化

druid提供了mysql、oracle、postgresql、sql-92的sql的完整支持,这是一个手写的高性能sql parser,支持visitor模式,使得分析sql的抽象语法树很方便。

直观sql语句用时10微秒以内,繁杂sql用时30微秒。