各大数据库连接池

c3p0,dbcp与druid 三大连接池的区别
了解c3p0,dbcp与druid
  说到druid,这个是在开源中国开源项目中看到的,说是比较好的数据连接池。于是乎就看看。扯淡就到这。
  下面就讲讲用的比较多的数据库连接池。(其实我最先接触的是dbcp这个) 
1)DBCP
  DBCP是一个依赖Jakarta commons-pool对象池机制的数据库连接池.DBCP可以直接的在应用程序中使用,Tomcat的数据源使用的就是DBCP。
 2)c3p0
  c3p0是一个开放源代码的JDBC连接池,它在lib目录中与Hibernate一起发布,包括了实现jdbc3和jdbc2扩展规范说明的Connection 和Statement 池的DataSources 对象。
3)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微秒。通过Druid提供的SQL Parser可以在JDBC层拦截SQL做相应处理,比如说分库分表、审计等。Druid防御SQL注入攻击的WallFilter就是通过Druid的SQL Parser分析语义实现的。
  看上面应该了解到功能上druid很厉害。
  再说说他们的属性吧,连接池配置大体可以分为基本配置、关键配置、性能配置等主要配置。
  基本配置是指连接池进行数据库连接的四个基本必需配置:
  传递给JDBC驱动的用于连接数据库的用户名、密码、URL以及驱动类名。
  DBCP c3p0 Druid
用户名 username user username
密码 password password password
URL url jdbcUrl jdbcUrl
驱动类名 driverClassName driverClass driverClassName
注:在Druid连接池的配置中,driverClassName可配可不配,如果不配置会根据url自动识别dbType(数据库类型),然后选择相应的driverClassName。
  关键配置:为了发挥数据库连接池的作用,在初始化时将创建一定数量的数据库连接放到连接池中,这些数据库连接的数量是由最小数据库连接数来设定的。无论这些数 据库连接是否被使用,连接池都将一直保证至少拥有这么多的连接数量。连接池的最大数据库连接数量限定了这个连接池能占有的最大连接数,当应用程序向连接池 请求的连接数超过最大连接数量时,这些请求将被加入到等待队列中。
  最小连接数 :
  是数据库一直保持的数据库连接数,所以如果应用程序对数据库连接的使用量不大,将有大量的数据库资源被浪费。
  初始化连接数:
  连接池启动时创建的初始化数据库连接数量。
  最大连接数
  是连接池能申请的最大连接数,如果数据库连接请求超过此数,后面的数据库连接请求被加入到等待队列中。
  最大等待时间:
  当没有可用连接时,连接池等待连接被归还的最大时间,超过时间则抛出异常,可设置参数为0或者负数使得无限等待(根据不同连接池配置)。
  DBCP c3p0 Druid
最小连接数 minIdle(0) minPoolSize(3) minIdle(0)
初始化连接数 initialSize(0) initialPoolSize(3) initialSize(0)
最大连接数 maxTotal(8) maxPoolSize(15) maxActive(8)
最大等待时间 maxWaitMillis(毫秒) maxIdleTime(0秒) maxWait(毫秒)
注1:在DBCP连接池的配置中,还有一个maxIdle的属性,表示最大空闲连接数,超过的空闲连接将被释放,默认值为8。对应的该属性在Druid连接池已不再使用,配置了也没有效果,c3p0连接池则没有对应的属性。
注2:数据库连接池在初始化的时候会创建initialSize个连接,当有数据库操作时,会从池中取出一个连接。如果当前池中正在使用的连接数等 于maxActive,则会等待一段时间,等待其他操作释放掉某一个连接,如果这个等待时间超过了maxWait,则会报错;如果当前正在使用的连接数没 有达到maxActive,则判断当前是否空闲连接,如果有则直接使用空闲连接,如果没有则新建立一个连接。在连接使用完毕后,不是将其物理连接关闭,而 是将其放入池中等待其他操作复用。
  性能配置:
    预缓存设置 :
  即是PSCache,PSCache对支持游标的数据库性能提升巨大,比如说oracle。JDBC的标准参数,用以控制数据源内加载的 PreparedStatements数量。但由于预缓存的statements属于单个connection而不是整个连接池,所以设置这个参数需要考 虑到多方面的因素。
  单个连接拥有的最大缓存数:要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。在Druid中,不会存在Oracle下PSCache占用内存过多的问题,可以把这个数值配置大一些,比如说100
  DBCP c3p0 Druid
开启缓存功能 poolPreparedStatements maxStatements poolPreparedStatements
单个连接拥有的最大缓存数 maxOpenPrepared-
Statements
maxStatementsPer-
Connection
maxOpenPrepared-
Statements
  连接有效性检测设置:
  连接池内部有机制判断,如果当前的总的连接数少于miniIdle,则会建立新的空闲连接,以保证连接数得到miniIdle。如果当前连接池中某 个连接在空闲了timeBetweenEvictionRunsMillis时间后任然没有使用,则被物理性的关闭掉。有些数据库连接的时候有超时限制 (mysql连接在8小时后断开),或者由于网络中断等原因,连接池的连接会出现失效的情况,这时候设置一个testWhileIdle参数为true, 可以保证连接池内部定时检测连接的可用性,不可用的连接会被抛弃或者重建,最大情况的保证从连接池中得到的Connection对象是可用的。当然,为了 保证绝对的可用性,你也可以使用testOnBorrow为true(即在获取Connection对象时检测其可用性),不过这样会影响性能。
  DBCP c3p0 Druid
申请连接检测 testOnBorrow testConnectionOnCheckin testOnBorrow
是否超时检测 testWhileIdle   testWhileIdle
空闲时间 timeBetweenEvictionRunsMillis idleConnectionTestPeriod timeBetweenEvictionRunsMillis
校验用sql语句 validationQuery preferredTestQuery validationQuery
归还连接检测 testOnReturn testConnectionOnCheckout testOnReturn
  超时连接关闭设置 :
  removeAbandoned参数,用来检测到当前使用的连接是否发生了连接泄露,所以在代码内部就假定如果一个连接建立连接的时间很长,则将其认定为泄露,继而强制将其关闭掉。
  DBCP c3p0 Druid
是否超时关闭连接 removeAbandoned breakAfterAcquireFailure removeAbandoned
超时时间 removeAbandonedTimeout checkoutTimeout removeAbandonedTimeout
是否记录日志 logAbandoned   logAbandoned
  c3p0重连设置:
  设置获取连接失败后,是否重新连接以及间隔时间。
  DBCP c3p0 Druid
重连次数   acquireRetryAttempts  
间隔时间   acquireRetryDelay  
   各个连接池的属性说明  DBCP 属性说明表
属性(Parameter) 默认值(Default) 描述(Description)
username   传递给JDBC驱动的用于建立连接的用户名(The connection username to be passed to our JDBC driver to establish a connection.)
password   传递给JDBC驱动的用于建立连接的密码(The connection password to be passed to our JDBC driver to establish a connection.)
url   传递给JDBC驱动的用于建立连接的URL(The connection URL to be passed to our JDBC driver to establish a connection.)
driverClassName   使用的JDBC驱动的完整有效的java 类名(The fully qualified Java class name of the JDBC driver to be used.)
defaultAutoCommit driver default 连接池创建的连接的默认的auto-commit状态,没有设置则不会自动提交(The default auto-commit state of connections created by this pool. If not set then the setAutoCommit method will not be called.)
initialSize 0 初始化连接:连接池启动时创建的初始化连接数量(The initial number of connections that are created when the pool is started.
maxTotal 8 最大活动连接:连接池在同一时间能够分配的最大活动连接的数量, 如果设置为非正数则表示不限制(The maximum number of active connections that can be allocated from this pool at the same time, or negative for no limit.)
maxIdle 8 最大空闲连接:连接池中容许保持空闲状态的最大连接数量,超过的空闲连接将被释放,如果设置为负数表示不限制(The maximum number of connections that can remain idle in the pool, without extra ones being released, or negative for no limit.)
minIdle 0 最小空闲连接:连接池中容许保持空闲状态的最小连接数量,负数表示没有现在(The maximum number of connections that can remain idle in the pool, without extra ones being released, or negative for no limit.)
注意:如果在某些负载比较大的系统中将maxIdel设置过小时,很可能会出现连接关闭的同时新连接马上打开的情况.这是由于关闭连接的线程比打开的快导致的.所以,对于这种系统中,maxIdle的设定值是不同的但是通常首选默认值
(NOTE: If maxIdle is set too low on heavily loaded systems it is possible you will see connections being closed and almost immediately new connections being opened. This is a result of the active threads momentarily closing connections faster than they are opening them, causing the number of idle connections to rise above maxIdle. The best value for maxIdle for heavily loaded system will vary but the default is a good starting point.)
maxWaitMillis indefinitely 最大等待时间:当没有可用连接时,连接池等待连接被归还的最大时间(以毫秒计数),超过时间则抛出异常,如果设置为-1表示无限等待(The maximum number of milliseconds that the pool will wait (when there are no available connections) for a connection to be returned before throwing an exception, or -1 to wait indefinitely.)
validationQuery   SQL查询,用来验证从连接池取出的连接,在将连接返回给调用者之前.如果指定,则查询必须是一个SQL SELECT并且必须返回至少一行记录(The SQL query that will be used to validate connections from this pool before returning them to the caller. If specified, this query MUST be an SQL SELECT statement that returns at least one row. If not specified, connections will be validation by calling the isValid() method.)
testOnCreate false 指明是否在建立连接之后进行验证,如果验证失败,则尝试重新建立连接(The indication of whether objects will be validated after creation. If the object fails to validate, the borrow attempt that triggered the object creation will fail.)
testOnBorrow true 指明是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个.注意: 设置为true后如果要生效,validationQuery参数必须设置为非空字符串(The indication of whether objects will be validated before being borrowed from the pool. If the object fails to validate, it will be dropped from the pool, and we will attempt to borrow another.)
testOnReturn false 指明是否在归还到池中前进行检验(The indication of whether objects will be validated before being returned to the pool.)
testWhileIdle false 指明连接是否被空闲连接回收器(如果有)进行检验.如果检测失败,则连接将被从池中去除.注意: 设置为true后如果要生效,validationQuery参数必须设置为非空字符串(The indication of whether objects will be validated by the idle object evictor (if any). If an object fails to validate, it will be dropped from the pool.)
timeBetweenEviction-
RunsMillis
-1 在空闲连接回收器线程运行期间休眠的时间值,以毫秒为单位.如果设置为非正数,则不运行空闲连接回收器线程(The number of milliseconds to sleep between runs of the idle object evictor thread. When non-positive, no idle object evictor thread will be run.)
numTestsPerEvictionRun 3 在每次空闲连接回收器线程(如果有)运行时检查的连接数量(The number of objects to examine during each run of the idle object evictor thread (if any).)
minEvictableIdleTime-Millis 1000*60*30 连接在池中保持空闲而不被空闲连接回收器线程(如果有)回收的最小时间值,单位毫秒(The minimum amount of time an object may sit idle in the pool before it is eligable for eviction by the idle object evictor (if any).)
softMiniEvictableIdle- TimeMillis -1 说明(The minimum amount of time a connection may sit idle in the pool before it is eligible for eviction by the idle connection evictor, with the extra condition that at least "minIdle" connections remain in the pool. When miniEvictableIdleTimeMillis is set to a positive value, miniEvictableIdleTimeMillis is examined first by the idle connection evictor - i.e. when idle connections are visited by the evictor, idle time is first compared against miniEvictableIdleTimeMillis (without considering the number of idle connections in the pool) and then against softMinEvictableIdleTimeMillis, including the minIdle constraint.)
maxConnLifetimeMillis -1 说明(The maximum lifetime in milliseconds of a connection. After this time is exceeded the connection will fail the next activation, passivation or validation test. A value of zero or less means the connection has an infinite lifetime.)
logExpiredConnections true 说明(Flag to log a message indicating that a connection is being closed by the pool due to maxConnLifetimeMillis exceeded. Set this property to false to suppress expired connection logging that is turned on by default.
connectionInitSqls null 说明(A Collection of SQL statements that will be used to initialize physical connections when they are first created. These statements are executed only once - when the configured connection factory creates the connection.)
info true 说明(True means that borrowObject returns the most recently used ("last in") connection in the pool (if there are idle connections available). False means that the pool behaves as a FIFO queue - connections are taken from the idle instance pool in the order that they are returned to the pool.)
poolPreparedState-ments false 开启池的prepared statement 池功能(Enable prepared statement pooling for this pool.)
maxOpenPreparedState-ments unlimited statement池能够同时分配的打开的statements的最大数量, 如果设置为0表示不限制(The maximum number of open statements that can be allocated from the statement pool at the same time, or negative for no limit.)
NOTE - Make sure your connection has some resources left for the other statements. Pooling PreparedStatements may keep their cursors open in the database, causing a connection to run out of cursors, especially if maxOpenPreparedStatements is left at the default (unlimited) and an application opens a large number of different PreparedStatements per connection. To avoid this problem, maxOpenPreparedStatements should be set to a value less than the maximum number of cursors that can be open on a Connection.
accessToUnderlyingConnectionAllowed false 控制PoolGuard是否容许获取底层连接(Controls if the PoolGuard allows access to the underlying connection.) 默认false不开启, 这是一个有潜在危险的功能, 不适当的编码会造成伤害.(关闭底层连接或者在守护连接已经关闭的情况下继续使用它).请谨慎使用,并且仅当需要直接访问驱动的特定功能时使用.注意: 不要关闭底层连接, 只能关闭前面的那个. Default is false, it is a potential dangerous operation and misbehaving programs can do harmful things. (closing the underlying or continue using it when the guarded connection is already closed) Be careful and only use when you need direct access to driver specific extensions. NOTE: Do not close the underlying connection, only the original one.
removeAbandoned false 标记是否删除泄露的连接,如果他们超过了removeAbandonedTimout的限制.如果设置为true, 连接被认为是被泄露并且可以被删除,如果空闲时间超过removeAbandonedTimeout. 设置为true可以为写法糟糕的没有关闭连接的程序修复数据库连接. (Flags to remove abandoned connections if they exceed the removeAbandonedTimout. A connection is considered abandoned and eligible for removal if it has not been used for longer than removeAbandonedTimeout. Setting one or both of these to true can recover db connections from poorly written applications which fail to close connections.)
removeAbandonedTimeout 300 泄露的连接可以被删除的超时值, 单位秒 (Timeout in seconds before an abandoned connection can be removed.)
logAbandoned false 标记当Statement或连接被泄露时是否打印程序的stack traces日志。被泄露的Statements和连接的日志添加在每个连接打开或者生成新的Statement,因为需要生成stack trace。(Flag to log stack traces for application code which abandoned a Statement or Connection. Logging of abandoned Statements and Connections adds overhead for every Connection open or new Statement because a stack trace has to be generated.)
abandonedUsageTracking false 如果为true, 那么连接池会记录每个方法调用时候的堆栈信息以及废弃连接的调试信息(If true, the connection pool records a stack trace every time a method is called on a pooled connection and retains the most recent stack trace to aid debugging of abandoned connections. There is significant overhead added by setting this to true.)
注:如果开启"removeAbandoned",那么连接在被认为泄露时可能被池回收. 这个机制在(getNumIdle() < 2)and (getNumActive() > getMaxActive() - 3)时被触发. 举例当maxActive=20, 活动连接为18,空闲连接为1时可以触发"removeAbandoned".但是活动连接只有在没有被使用的时间超过"removeAbandonedTimeout"时才被删除,默认300秒.在resultset中游历不被计算为被使用.
If you have enabled removeAbandonedOnMaintenance or removeAbandonedOnBorrow then it is possible that a connection is reclaimed by the pool because it is considered to be abandoned. This mechanism is triggered when (getNumIdle() < 2) and (getNumActive() > getMaxTotal() - 3) and removeAbandonedOnBorrow is true; or after eviction finishes and removeAbandonedOnMaintenance is true. For example, maxTotal=20 and 18 active connections and 1 idle connection would trigger removeAbandonedOnBorrow, but only the active connections that aren't used for more then "removeAbandonedTimeout" seconds are removed (default 300 sec). Traversing a resultset doesn't count as being used. Creating a Statement, PreparedStatement or CallableStatement or using one of these to execute a query (using one of the execute methods) resets the lastUsed property of the parent connection.
   C3P0  属性说明表
属性(Parameter) 默认值(Default) 描述(Description)
user   同DBCP中的username属性
password   同DBCP中的password属性
jdbcUrl   同DBCP中的jdbcUrl属性
driverClass   同DBCP中的driverClass属性
autoCommitOnClose false 默认值false表示回滚任何未提交的任务,设置为true则全部提交,而不是在关闭连接之前回滚
(C3P0's default policy is to rollback any uncommitted, pending work.Setting autoCommitOnClose to true causes uncommitted pending work to be committed, rather than rolled back on Connection close.)
*参见DBCP中的defaultAutoCommit属性
initialPoolSize 3 初始化连接:连接池启动时创建的初始化连接数量(The initial number of connections that are created when the pool is started.
*参见DBCP中的initialSize属性
maxPoolSize 15 连接池中保留的最大连接数(Maximum number of Connections a pool will maintain at any given time.) *参见DBCP中的maxIdle属性
minPoolSize 3 连接池中保留的最小连接数(Minimum number of Connections a pool will maintain at any given time.) *参见DBCP中的maxIdle属性
maxIdleTime 0 最大等待时间:当没有可用连接时,连接池等待连接被归还的最大时间(以秒计数),超过时间则抛出异常,如果设置为0表示无限等待(Seconds a Connection can remain pooled but unused before being discarded. Zero means idle connections never expire.) *参见DBCP中maxWaitMillis 属性
preferredTestQuery null 定义所有连接测试都执行的测试语句。在使用连接测试的情况下这个一显著提高测试速度。注意:测试的表必须在初始数据源的时候就存在。(Defines the query that will be executed for all connection tests, if the default ConnectionTester (or some other implementation of QueryConnectionTester, or better yet FullQueryConnectionTester) is being used. Defining a preferredTestQuery that will execute quickly in your database may dramatically speed up Connection tests.)
testConnectionOn- Checkin false 如果设为true那么在取得连接的同时将校验连接的有效性。(If true, an operation will be performed asynchronously at every connection checkin to verify that the connection is valid. Use in combination with idleConnectionTestPeriod for quite reliable, always asynchronous Connection testing.) *参见DBCP中的testOnBorrow属性
testConnectionOn- Checkout false 如果设为true那么在每个connection提交的时候都将校验其有效性,但是要确保配置的preferredTestQuery的有效性(If true, an operation will be performed at every connection checkout to verify that the connection is valid. Be sure to set an efficient preferredTestQuery or automaticTestTable if you set this to true.) *参见DBCP中的testOnBorrow属性
idleConnectionTest- Period 0 如果设置大于0,表示过了多少秒检查一次空闲连接,结合testConnectionOnCheckin以及testConnectionOnCheckout使用(If this is a number greater than 0, c3p0 will test all idle, pooled but unchecked-out connections, every this number of seconds.)
acquireRetryAttempts 30 定义在从数据库获取新连接失败后重复尝试的次数, 如果小于0则表示无限制的连接。(Defines how many times c3p0 will try to acquire a new Connection from the database before giving up. If this value is less than or equal to zero, c3p0 will keep trying to fetch a Connection indefinitely.)
acquireRetryDelay 1000 两次连接中的间隔时间,单位毫秒。(Milliseconds, time c3p0 will wait between acquire attempts.)
breakAfterAcquire-
Failure
false 获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常。但是数据源仍有效保留,并在下次调用 getConnection() 的时候继续尝试获取连接。如果为 true,那么在尝试获取连接失败后该数据源将声明已断开并永久关闭。(If true, a pooled DataSource will declare itself broken and be permanently closed if a Connection cannot be obtained from the database after making acquireRetryAttempts to acquire one. If false, failure to obtain a Connection will cause all Threads waiting for the pool to acquire a Connection to throw an Exception, but the DataSource will remain valid, and will attempt to acquire again following a call to getConnection().)
checkoutTimeout 0 当连接池用完时客户端调用 getConnection() 后等待获取新连接的时间,潮湿后将抛出SQLException,如设为0,则为无限期等待。单位毫秒。(The number of milliseconds a client calling getConnection() will wait for a Connection to be checked-in or acquired when the pool is exhausted. Zero means wait indefinitely. Setting any positive value will cause the getConnection() call to time-out and break with an SQLException after the specified number of milliseconds.)
maxStatements 0 控制数据源内加载的PreparedStatements数量(Enable prepared statement pooling for this pool.)
maxStatementsPer- Connection 0 定义了连接池内单个连接所拥有的最大缓存statements数(The maximum number of open statements that can be allocated from the statement pool at the same time, or negative for no limit.)
   DRUID 属性说明表
属性(Parameter) 默认值(Default) 描述(Description)
username   连接数据库的用户名
password   连接数据库的密码
jdbcUrl   同DBCP中的jdbcUrl属性
driverClassName 根据url自动识别 这一项可配可不配,如果不配置druid会根据url自动识别dbType,然后选择相应的driverClassName
initialSize 0 初始化时建立物理连接的个数。初始化发生在显示调用init方法,或者第一次getConnection时 *参见DBCP中的initialSize属性
maxActive 8 最大连接池数量(Maximum number of Connections a pool will maintain at any given time.) *参见DBCP中的maxTotal属性
maxIdle 8 已经不再使用,配置了也没效果*参见DBCP中的maxIdle属性
minIdle   最小连接池数量
maxWait   获取连接时最大等待时间,单位毫秒。配置了maxWait之后,缺省启用公平锁,并发效率会有所下降,如果需要可以通过配置useUnfairLock属性为true使用非公平锁。
poolPreparedState- ments false 是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。
maxOpenPrepared- Statements -1 要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。在Druid中,不会存在Oracle下PSCache占用内存过多的问题,可以把这个数值配置大一些,比如说100
testOnBorrow true 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
testOnReturn false 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能
testWhileIdle false 建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
validationQuery   用来检测连接是否有效的sql,要求是一个查询语句。如果validationQuery为null,testOnBorrow、testOnReturn、 testWhileIdle都不会其作用。在mysql中通常为select 'x',在oracle中通常为select 1 from dual
timeBetweenEviction-RunsMillis   1) Destroy线程会检测连接的间隔时间 2) testWhileIdle的判断依据
minEvictableIdle- TimeMillis   Destory线程中如果检测到当前连接的最后活跃时间和当前时间的差值大于minEvictableIdleTimeMillis,则关闭当前连接。
removeAbandoned   对于建立时间超过removeAbandonedTimeout的连接强制关闭
removeAbandoned-Timeout   指定连接建立多长时间就需要被强制关闭
logAbandoned false 指定发生removeabandoned的时候,是否记录当前线程的堆栈信息到日志中
filters   属性类型是字符串,通过别名的方式配置扩展插件,常用的插件有: 1)监控统计用的filter:stat 2)日志用的filter:log4j 3)防御sql注入的filter:wall
参考博客:http://www.cnblogs.com/JavaSubin/p/5294721.html(我这个应该算是抄完的。)
文章标签:  数据库 数据库连接池 Java 阿里
想对作者说点什么?  我来说一句

阿里数据库连接池 druid 配置详解

Java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,有不得不使用数据库连接池。数据库连接池有很多选择,c3p、dhcp、proxool等,druid作为一名后起之秀,凭借其出色的性能,也...

shadow_zed shadow_zed

2017-05-23 13:07:15

阅读数:4589

Druid数据库连接池及内置监控的配置和使用

Druid介绍    Druid首先是一个数据库连接池,并且是目前最好的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,包括DBCPC3P0、BoneCP、Proxool、JBoss...

aqsunkai aqsunkai

2016-06-26 22:47:24

阅读数:6865

c3p0,dbcpdruid 三大连接池的区别 - CSDN博客

了解c3p0,dbcpdruid DBCP DBCP是一个依赖Jakarta commons-pool对象池机制的数据库连接池.DBCP可以直接的在应用程序中使用,Tomcat的数据源使用的就是DBCP。 c3p0 ...

2018-5-17

c3p0,dbcpdruid连接池性能解析 - CSDN博客

c3p0,dbcpdruid 三大连接池的区别 了解c3p0,dbcpdruid 说到druid,这个是在开源中国开源项目中看到的,说是比较好的数据连接池。于是乎就看看。扯淡就到这。 ...

2018-5-1

西安30岁女老师炒股5年不亏之谜 震惊投资界竞旗 · 顶新

数据库连接池Druid使用总结

根据综合性能,可靠性,稳定性,扩展性,易用性等因素替换成最优的数据库连接池。...

jiangguilong2000 jiangguilong2000

2017-03-30 11:48:25

阅读数:6312

数据库连接池优化配置(druid,dbcp,c3p0) - CSDN博客

  主要描述了数据库连接池参数配置的准则,针对常用的数据库连接池(c3p0,dbcp,druid)给出推荐的配置。 考虑因素         1:当前连接DB的规模 ...

2018-4-28

c3p0,dbcp,druid连接池

c3p0-0.9.5.1,commons-dbcp-1.4,commons-pool-1.3,druid-1.0.26,junit-4.7等jar包,可供选择,一般在后期做项目的时候都离不开,必定会用到一个连接池,c3p0...

2018-5-9

阿里druid学习,号称最好的数据库连接池

一:介绍   https://github.com/alibaba/druid/wiki/%E9%A6%96%E9%A1%B5 二:比较  druid是类似dbcp,c3p0的一个数...

zcl1199 zcl1199

2016-11-09 11:21:12

阅读数:4752

Druid,目前最好的数据库连接池

Druid是什么? Druid首先是一个数据库连接池Druid是目前最好的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,包括DBCPC3P0、BoneCP、Proxool、...

wade01274536 wade01274536

2015-12-21 10:43:37

阅读数:10108

c3p0,druid,dbcp的性能比较 - CSDN博客

举报内容: c3p0,druid,dbcp的性能比较 举报原因: 色情 政治 抄袭 广告 招聘 骂人 其他 原文地址: 原因补充: 最多只允许输入30个字加入...

2018-5-5

数据库连接池性能比对(hikari druid c3p0 dbcp jdbc) - CSDN博客

性能表现:hikariCP>druid>tomcat-jdbc>dbcp>c3p0。  hikariCP 的性能及其优异。hikariCP号称java平台最快的数据库连接池。  hikariCP在并发较高的情况下,性能...

2018-5-13

Druid连接池简单入门配置

偶尔的机会解释Druid连接池,后起之秀,但是评价不错,另外由于是阿里淘宝使用过的所以还是蛮看好的。 Druid连接池,监控于一体整好复合当前项目的需要,项目是ssh结构,之前是用C3p0...

pk490525 pk490525

2013-10-11 18:19:05

阅读数:63097

老股民酒后无意说漏:20年炒股 坚持只看1指标红叶金融 · 顶新

c3p0,dbcpdruid 三大连接池的区别 - CSDN博客

了解c3p0,dbcpdruid 说到druid,这个是在开源中国开源项目中看到的,说是比较好的数据连接池。于是乎就看看。扯淡就到这。 下面就讲讲用的比较多的数据库连接池...

2018-1-1

c3p0,dbcpdruid 三大连接池的区别 - CSDN博客

  DBCP c3p0 Druid 开启缓存功能 poolPreparedStatements maxStatements poolPreparedStatements 单个连接拥有的最大缓存数 maxOpenPrepared- Statements maxStatementsPe...

2018-5-23

DRUID连接池的实用 配置详解

1. DRUID连接池的实用 配置详解 • DRUID介绍 DRUID是阿里巴巴开源平台上一个数据库连接池实现,它结合了C3P0DBCP、PROXOOL等DB池的优点,同时加入了...

deng11408205 deng11408205

2018-03-20 17:42:26

阅读数:1035

Druid连接池一(学习笔记)

1. Druid简介 Druid是Java语言中最好的数据库连接池Druid能够提供强大的监控和扩展功能。 2. Druid下载 正式版本下载:     maven中央仓库:  http://cen...

yinxiangbing yinxiangbing

2015-08-23 14:21:09

阅读数:6848

Druid连接池四(学习笔记)

11. Druid加密     运维和DBA都不希望把密码明文直接写在配置文件中,Druid提供了数据库密码加密的功能。 ConfigFilter的作用包括: 从配置文件中读取配置 从远程http文件...

yinxiangbing yinxiangbing

2015-08-23 14:29:38

阅读数:12891

Druid数据库连接池使用

2017年11月05日 14KB 下载

Druid连接池简介和配置

Druid连接池,监控于一体整好复合当前项目的需要,项目是ssh结构,之前是用C3p0的,现在换一个连接池也是很简单的,首先spring配置DataSource,配置如下: [html] vi...

burpee burpee

2016-05-26 14:51:34

阅读数:4889

druid连接池配置Druid

Druid 有两种配置方法:一种是基于Spring的配置,另一种是手动创建链接。 下面简述这两种方法。 一、Spring配置 把数据源改为以下配置:...

tolcf tolcf

2015-09-10 17:23:56

阅读数:5362

数据库阿里连接池 druid配置详解

java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,有不得不使用数据库连接池。数据库连接池有很多选择,c3p、dhcp、proxool等,druid作为一名后起之秀,凭借其出色的性能,也...

hj7jay hj7jay

2016-06-16 00:34:26

阅读数:95337

Druid数据库连接池的正确姿势

1.场景还原     在市面上,数据库连接池有好多种方案,今天笔者就阿里巴巴的Druid数据库连接池给大家分享下心得;其中应用Druid数据库连接池的优势在于能够实时监控sql的运行状态,这对项目的后...

zhangxing52077 zhangxing52077

2017-11-06 15:30:48

阅读数:873

淘宝druid数据库连接池使用示例

参考: 淘宝连接池Druid  http://www.zhurouyoudu.com/index.php/archives/635/ http://code.alibabatech.com/wiki/...

tower888 tower888

2013-05-22 16:18:10

阅读数:36997

druid 连接池

java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,有不得不使用数据库连接池。数据库连接池有很多选择,c3p、dhcp、proxool等,druid作为一名后起之秀,凭借其出色的性能,也...

liu414226580 liu414226580

2014-07-01 10:17:33

阅读数:13309

Druid 连接池 JDBCUtils 工具类的使用

Druid工具介绍它不仅仅是一个数据库连接池,它还包含一个ProxyDriver,一系列内置的JDBC组件库,一个SQL Parser。 支持所有JDBC兼容的数据库,包括Oracle、MySQL、D...

a18302465887 a18302465887

2017-07-27 18:26:32

阅读数:3042

数据库连接池性能比对(hikari druid c3p0 dbcp jdbc)

背景 对现有的数据库连接池做调研对比,综合性能,可靠性,稳定性,扩展性等因素选出推荐出最优的数据库连接池 。      NOTE: 本文所有测试均是MySQL库 测试结论   ...

qq_31125793 qq_31125793

2016-04-25 14:15:35

阅读数:36499

阿里数据库连接池druid详解

DRUID连接池的实用 配置详解 DRUID介绍     DRUID是阿里巴巴开源平台上一个数据库连接池实现,它结合了C3P0DBCP、PROXOOL等DB池的优点,同时加入了日志监控,...

sdx1237 sdx1237

2017-04-20 21:26:37

阅读数:6599

使用druid连接池带来的坑testOnBorrow=false

首先说一下自己程序中遇到的问题,前一段时间新写了一个项目,主要架构改进,为前端提供接口(spring +springmvc+mybatis) 在新项目中使用的是阿里的druid连接池,配置简单,除...

lx348321409 lx348321409

2017-07-25 19:16:55

阅读数:9225

Druid数据库连接池的使用和详解

阿里巴巴推出的国产数据库连接池,据网上测试对比,比目前的DBCPC3P0数据库连接池性能更好 Druid是一个JDBC组件,它包括三部分:  DruidDriver 代理Driver...

u011271894 u011271894

2015-04-23 12:25:02

阅读数:4476

druid简单教程

java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,有不得不使用数据库连接池。数据库连接池有很多选择,c3p、dhcp、proxool等,druid作为一名后起之秀,凭借其出色的性能,也...

yunnysunny yunnysunny

2013-03-14 14:34:00

阅读数:90229

SpringBoot下Druid连接池的使用配置

Druid是一个JDBC组件,druid 是阿里开源在 github 上面的数据库连接池,它包括三部分: * DruidDriver 代理Driver,能够提供基于Filter-Chain模式的插...

shuxing520 shuxing520

2017-10-23 23:14:14

阅读数:1612

数据库连接池优化配置(druid,dbcp,c3p0)

主要描述了数据库连接池参数配置的准则,针对常用的数据库连接池(c3p0,dbcp,druid)给出推荐的配置。...

hetaohappy hetaohappy

2016-07-08 14:58:15

阅读数:15078

c3p0druiddbcp的性能比较

对比发现druid是最好的!

q397739000 q397739000

2016-09-06 18:47:31

阅读数:1882

DruidC3P0、Tomcat Pool的性能测试与选型

DruidC3P0、Tomcat Pool的性能测试与选型。

xzknet xzknet

2015-10-14 17:43:44

阅读数:10401

数据库连接池c3p0迁移到druid

Git: https://github.com/alibaba/druid   Druid.wiki: https://github.com/alibaba/druid/wiki FAQ: htt...

lanmo555 lanmo555

2014-10-11 12:52:15

阅读数:2993

应用Druid监控SQL语句的执行情况(测试数据表明,Druid性能比DBCPC3P0、Proxool、JBoss都好)

转载地址:http://blog.csdn.net/wind520/article/details/9202555 Druid是什么? Druid首先是一个数据库连接池Druid是目...

wanglha wanglha

2016-07-11 09:45:22

阅读数:2125

c3p0数据连接池更换为druid

参考: Druid 介绍及配置 http://www.cnblogs.com/niejunlei/p/5977895.html 配置_DruidDataSource参考配置 https://git...

zx1323 zx1323

2017-09-30 15:06:50

阅读数:126

数据源性能测试用例,C3P0,Druid,Tomcat

2015年10月14日 4.94MB 下载

数据库中间件druid更换c3p0以及druid数据源监控配置

首先介绍下Druid是阿里巴巴开源平台上的一个项目,整个项目由数据库连接池、插件框架和SQL解析器组成。该项目主要是为了扩展JDBC的一些限制,可以让程序员实现一些特殊的需求,比如向密钥服务请求凭证、...

u010198940 u010198940

2015-11-19 16:33:42

阅读数:1518

连接池c3p0 ,Proxool ,Druid ,Tomcat Jdbc Pool对比测试

这次所要做的测试是比较几种我们常用的数据库连接池的性能,他们分别是:c3p0 ,Proxool ,Druid ,Tomcat Jdbc Pool这四种,测试将采用统一的参数配置力求比较“公平”的体现统...

awj321000 awj321000

2016-08-10 11:20:03

阅读数:1013

Druid、BoneCP、DBCPC3P0等主流数据库对比

关键功能 Druid BoneCP DBCP C3P0 Proxool JBoss LRU 是 否 是 否 是 是 PSCache 是 是 是 是 ...

a1178016652 a1178016652

2015-04-13 16:01:51

阅读数:14683

DBCP连接池C3P0连接池的比较

DBCP连接池C3P0连接池的比较            如果一个项目中如果需要多个连接,如果一直获取连接,断开连接,这样比较浪费资源,如果创建一个池,用池来管理Connection,这样就可以重复...

m15732622413 m15732622413

2017-02-15 12:16:03

阅读数:12076

c3p0dbcp区别

c3p0简介: C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate,Spring等。...

huangxinyu_it huangxinyu_it

2016-03-08 13:27:05

阅读数:8757

c3p0dbcp、tomcat jdbc pool 连接池区别(推荐使用jdbc pool)

查看资料,得知dbcpc3p0都是单线程的,在高并发的环境下性能会非常低下, 决定换用tomcat自带的jdbc-pool,关于jdbc-pool的项目介绍。 区别参考链接:http://www...

u010363836 u010363836

2016-04-19 13:14:29

阅读数:12161

JDBC (c3p0dbcp、jndi及不使用连接池)

以下对java连接mysql数据库进行总结,包括c3p0dbcp、jndi及不使用连接池的的连接方式(下文简称jdbc)。 1.不使用连接池方式(Jdbc) 1.1 工具类(JdbcUtil.jav...

hua_yuan2015 hua_yuan2015

2016-10-28 20:57:13

阅读数:1604

DBCPC3P0的核心区别,以及Proxool和BoneCP连接池介绍

DBCPC3P0区别,以及Proxool和BoneCP连接池介绍

baidu_37107022 baidu_37107022

2017-08-19 20:49:17

阅读数:582

JDBC之连接池DBCPc3p0的简单使用

JDBC之连接池DBCPc3p0的简单使用 一背景 二常用的开源数据库连接池 1 dbcp 2 c3p0 三dbcpc3p0对比JDBC之连接池DBCPc3p0的简单使用提示:本内容通过慕课网学...

u014292162 u014292162

2017-04-07 17:44:26

阅读数:2301

dbcpc3p0、jndi三者的联系

请问数据库连接池技术中dbcpc3p0、jndi三者的联系          dbcpc3p0  是两个数据库连接池 这两个连接池都是Hi...

hawk_do hawk_do

2016-01-11 15:51:14

阅读数:1189

浅入JDBC(事务,连接池dbcpc3p0)

衔接 初学JDBChttp://blog.csdn.net/u010542146/article/details/50782684内容概要:一、JDBC常用的API深入详解及存储过程的调用 二、JD...

u010542146 u010542146

2016-03-03 14:31:58

阅读数:1741

dbcpc3p0数据连接池比较

c3p0dbcp和proxool比较 现在常用的开源数据连接池主要有c3p0dbcp和proxool三种,其中:  hibernate开发组推荐使用c3p0;  spring开发组推荐使...

zcl1199 zcl1199

2016-06-03 11:10:05

阅读数:2649

java中数据库连接池框架c3p0dbcp区别

在java项目中为了节省与数据库之间的交互成本,经常会用到数据库连接池,dbcpc3p0就是其中比较流行的两种 所谓数据库连接池,就是事先把与数据库的连接放在一起的管理容器,当项目中要与数据库打交道...

ITlyng ITlyng

2017-02-19 10:48:33

阅读数:824

DBCPC3P0、Proxool 、 BoneCP开源连接池的比较

简介   使用评价  项目主页  DBCP DBCP是一个依赖Jakarta commons-pool对象池机制的数据库连接池.DBCP可以直接的在应用程序用使用 ...

miclung miclung

2012-02-03 15:19:39

阅读数:3005

开源DBCPC3P0、Proxool 、 BoneCP连接池的比较

简介 项目主页 使用评价  DBCP DBCP是一个依赖Jakarta commons-pool对象池机制的数据库连接池.DBCP可以直接的在应用程序用使用 http...

sqjhwl sqjhwl

2013-05-08 15:36:22

阅读数:6553

dbcpc3p0数据源配置,建议用c3p0

dbcpc3p0数据源配置,建议用c3p0

responsecool responsecool

2014-10-07 19:56:44

阅读数:1087

连接池与数据源:DBCP以及C3P0的使用

一、连接池的概念和使用  在实际应用开发中,特别是在WEB应用系统中,如果JSP、Servlet或EJB使用JDBC直接访问数据库中的数据,每一次数据访问请求都必须经历建立数据库连接、打开数据库、存...

JAVA528416037 JAVA528416037

2015-06-29 13:28:21

阅读数:2555

使用c3p0DBCP连接池,造成的MySql 8小时问题解决方案

本文提供了对c3p0DBCP连接池连接MySql数据库时, 8小时内无请求自动断开问题的连接方案。首先介绍一下我在项目中遇到的问题,后面提供了使用DBCP连接池的解决方案。 基本问题解决 项目环境:...

你可能感兴趣的:(数据库,数据库连接池,Java,阿里)