sql 连接池

来源:互联网 发布:springboot 初始化sql 编辑:程序博客网 时间:2024/05/22 07:53
    数据库连接池技术的思想非常简单,将数据库连接作为对象存储在一个Vector对象中,一旦数据库连接建立后,不同的数据库访问请求就可以共享这些连接,这样,通过复用这些已经建立的数据库连接,可以克服上述缺点,极大地节省系统资源和时间。

数据库连接池的主要操作如下:
(1)建立数据库连接池对象(服务器启动)。
(2)按照事先指定的参数创建初始数量的数据库连接(即:空闲连接数)。
(3)对于一个数据库访问请求,直接从连接池中得到一个连接。如果数据库连接池对象中没有空闲的连接,且连接数没有达到最大(即:最大活跃连接数),创建一个新的数据库连接。
(4)存取数据库。
(5)关闭数据库,释放所有数据库连接(此时的关闭数据库连接,并非真正关闭,而是将其放入空闲队列中。如实际空闲连接数大于初始空闲连接数则释放连接)。
(6)释放数据库连接池对象(服务器停止、维护期间,释放数据库连接池对象,并释放所有连接)。




Spring在第三方依赖包中包含了两个数据源的实现类包,其一是ApacheDBCP,其二是 C3P0。可以在Spring配置文件中利用这两者中任何一个配置数据源。
[html] view plaincopy
  1. <!-- DBCP-->   
  2.     <!--    
  3.     <bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource">  
  4.         <property name="driverClassName" value="${jdbc.driverClassName}" />  
  5.         <property name="url" value="${jdbc.url}" />  
  6.         <property name="username" value="${jdbc.username}" />  
  7.         <property name="password" value="${jdbc.password}" />  
  8.      -->  
  9.    
<!-- C3P0-->
[html] view plaincopy
  1. <bean id="dataSource" destroy-method="close"  class="com.mchange.v2.c3p0.ComboPooledDataSource">  
  2.  <property name="driverClass" value="${jdbc.driverClassName}" />  
  3.  <property name="jdbcUrl" value="${jdbc.url}" />  
  4.  <property name="user" value="${jdbc.username}" />  
  5.  <property name="password" value="${jdbc.password}" />  
  6.    
  7.   <property name="minPoolSize"><value>1</value></property>  
  8.          <property name="maxPoolSize"><value>20</value></property>  
  9.          <property name="maxIdleTime"><value>1800</value></property>  
  10.          <property name="acquireIncrement"><value>2</value></property>  
  11.          <property name="maxStatements"><value>0</value></property>  
  12.          <property name="initialPoolSize"><value>2</value></property>  
  13.          <property name="idleConnectionTestPeriod"><value>1800</value></property>  
  14.          <property name="acquireRetryAttempts"><value>30</value></property>  
  15.          <property name="breakAfterAcquireFailure"><value>true</value></property>  
  16.          <property name="testConnectionOnCheckout"><value>false</value></property>  
  17.    
  18.    
  19. </bean>   

Spring 连接池的另一种配置

BoneCP BoneCP是一个快速,开源的数据库连接池。帮你管理数据连接让你的应用程序能更快速地访问数据库。比C3P0/DBCP连接池快。
[html] view plaincopy
  1. <!--定义数据源boneCP-->   
  2.     <bean id="dataSource" destroy-method="close" class="com.jolbox.bonecp.BoneCPDataSource">  
  3.         <property name="driverClass" value="${jdbc.driverClassName}" />  
  4.         <property name="jdbcUrl" value="${jdbc.url}" />  
  5.         <property name="username" value="${jdbc.username}" />  
  6.         <property name="password" value="${jdbc.password}" />  
  7.           
  8.         <!-- 检查数据库连接池中空闲连接的间隔时间 -->  
  9.         <property name="idleConnectionTestPeriod" value="60" />  
  10.         <!-- 连接池中未使用的链接最大存活时间  -->  
  11.         <property name="idleMaxAge" value="240" />  
  12.          <!-- 每个分区最大的连接数 -->    
  13.         <property name="maxConnectionsPerPartition" value="30" />  
  14.         <!-- 每个分区最小的连接数 -->    
  15.         <property name="minConnectionsPerPartition" value="10" />  
  16.           <!-- 分区数 ,默认值2,最小1,推荐3-4,视应用而定-->    
  17.         <property name="partitionCount" value="3" />  
  18.          <!-- 每次去拿数据库连接的时候一次性要拿几个,默认值:2 -->    
  19.         <property name="acquireIncrement" value="5" />  
  20.         <!-- 设置连接池阀值  -->  
  21.         <property name="poolAvailabilityThreshold" value="10"></property>  
  22.         <!-- 连接时间 -->  
  23.         <property name="connectionTimeout" value="3000"></property>  
  24.     </bean>  
  25.       

 <!-- Proxool -->

 

[html] view plaincopy
  1. <bean id="dataSource"    class="org.logicalcobwebs.proxool.ProxoolDataSource">  
  2.       <property name="driver" value="${jdbc.driverClassName}"/>  
  3.       <property name="driverUrl" value="${jdbc.url}"/>  
  4.       <property name="user" value="${jdbc.username}"/>  
  5.       <property name="password" value="${jdbc.password}"/>  
  6.         
  7.           <!--  如果housekeeper 检测到某个线程的活动时间大于这个数值.它将会杀掉这个线程.所以确认一下你的服务器的带宽.然后定一个合适的值.默认是5分钟. -->  
  8.           <property name="maximumActiveTime" value="60000"/>   
  9.           <!--  连接池中可用的连接数量.如果当前的连接池中的连接少于这个数值.新的连接将被建立(假设没有超过最大可用数).例如.我们有3个活动连接2个可用连接,而我们的prototype-count是4,那么数据库连接池将试图建立另外2个连接.这和 minimum-connection-count不同. minimum-connection-count把活动的连接也计算在内.prototype-count 是spare connections 的数量. -->   
  10.           <property name="prototypeCount" value="0"/>   
  11.           <!-- 最大的数据库连接数. -->   
  12.           <property name="maximumConnectionCount" value="50"/>    
  13.           <!-- 最小的数据库连接数 -->  
  14.           <property name="minimumConnectionCount" value="2"/>   
  15.           <!--  -->   
  16.           <property name="simultaneousBuildThrottle" value="50"/>    
  17.           <!--  -->  
  18.           <property name="houseKeepingTestSql" value="select CURRENT_DATE"/>    
  19. t;/bean>  

0 0
原创粉丝点击