日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

阿里巴巴 连接池 druid 的使用、maven依赖

發(fā)布時(shí)間:2023/12/18 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 阿里巴巴 连接池 druid 的使用、maven依赖 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前些天發(fā)現(xiàn)了一個(gè)巨牛的人工智能學(xué)習(xí)網(wǎng)站,通俗易懂,風(fēng)趣幽默,忍不住分享一下給大家。點(diǎn)擊跳轉(zhuǎn)到教程。

1.?? Druid是一個(gè)JDBC組件,它包括三部分:?

  • DruidDriver 代理Driver,能夠提供基于Filter-Chain模式的插件體系。?

  • DruidDataSource 高效可管理的數(shù)據(jù)庫(kù)連接池。?

  • SQLParser

2.配置說(shuō)明:
配置缺省值說(shuō)明
name?配置這個(gè)屬性的意義在于,如果存在多個(gè)數(shù)據(jù)源,監(jiān)控的時(shí)候可以通過(guò)名字來(lái)區(qū)分開(kāi)來(lái)。
如果沒(méi)有配置,將會(huì)生成一個(gè)名字,格式是:"DataSource-" + System.identityHashCode(this)
jdbcUrl?連接數(shù)據(jù)庫(kù)的url,不同數(shù)據(jù)庫(kù)不一樣。例如:
mysql : jdbc:mysql://10.20.153.104:3306/druid2?
oracle : jdbc:oracle:thin:@10.20.149.85:1521:ocnauto
username?連接數(shù)據(jù)庫(kù)的用戶名
password?連接數(shù)據(jù)庫(kù)的密碼。如果你不希望密碼直接寫(xiě)在配置文件中,可以使用ConfigFilter。詳細(xì)看這里:https://github.com/alibaba/druid/wiki/%E4%BD%BF%E7%94%A8ConfigFilter
driverClassName根據(jù)url自動(dòng)識(shí)別這一項(xiàng)可配可不配,如果不配置druid會(huì)根據(jù)url自動(dòng)識(shí)別dbType,然后選擇相應(yīng)的driverClassName
initialSize0初始化時(shí)建立物理連接的個(gè)數(shù)。初始化發(fā)生在顯示調(diào)用init方法,或者第一次getConnection時(shí)
maxActive8最大連接池?cái)?shù)量
maxIdle8已經(jīng)不再使用,配置了也沒(méi)效果
minIdle?最小連接池?cái)?shù)量
maxWait?獲取連接時(shí)最大等待時(shí)間,單位毫秒。配置了maxWait之后,缺省啟用公平鎖,并發(fā)效率會(huì)有所下降,如果需要可以通過(guò)配置useUnfairLock屬性為true使用非公平鎖。
poolPreparedStatementsfalse是否緩存preparedStatement,也就是PSCache。PSCache對(duì)支持游標(biāo)的數(shù)據(jù)庫(kù)性能提升巨大,比如說(shuō)oracle。在mysql下建議關(guān)閉。
maxOpenPreparedStatements-1要啟用PSCache,必須配置大于0,當(dāng)大于0時(shí),poolPreparedStatements自動(dòng)觸發(fā)修改為true。在Druid中,不會(huì)存在Oracle下PSCache占用內(nèi)存過(guò)多的問(wèn)題,可以把這個(gè)數(shù)值配置大一些,比如說(shuō)100
validationQuery?用來(lái)檢測(cè)連接是否有效的sql,要求是一個(gè)查詢語(yǔ)句。如果validationQuery為null,testOnBorrow、testOnReturn、testWhileIdle都不會(huì)其作用。
testOnBorrowtrue申請(qǐng)連接時(shí)執(zhí)行validationQuery檢測(cè)連接是否有效,做了這個(gè)配置會(huì)降低性能。
testOnReturnfalse歸還連接時(shí)執(zhí)行validationQuery檢測(cè)連接是否有效,做了這個(gè)配置會(huì)降低性能
testWhileIdlefalse建議配置為true,不影響性能,并且保證安全性。申請(qǐng)連接的時(shí)候檢測(cè),如果空閑時(shí)間大于timeBetweenEvictionRunsMillis,執(zhí)行validationQuery檢測(cè)連接是否有效。
timeBetweenEvictionRunsMillis?有兩個(gè)含義:
1) Destroy線程會(huì)檢測(cè)連接的間隔時(shí)間 2) testWhileIdle的判斷依據(jù),詳細(xì)看testWhileIdle屬性的說(shuō)明
numTestsPerEvictionRun?不再使用,一個(gè)DruidDataSource只支持一個(gè)EvictionRun
minEvictableIdleTimeMillis??
connectionInitSqls?物理連接初始化的時(shí)候執(zhí)行的sql
exceptionSorter根據(jù)dbType自動(dòng)識(shí)別當(dāng)數(shù)據(jù)庫(kù)拋出一些不可恢復(fù)的異常時(shí),拋棄連接
filters?屬性類型是字符串,通過(guò)別名的方式配置擴(kuò)展插件,常用的插件有:
監(jiān)控統(tǒng)計(jì)用的filter:stat 日志用的filter:log4j 防御sql注入的filter:wall
proxyFilters?類型是List<com.alibaba.druid.filter.Filter>,如果同時(shí)配置了filters和proxyFilters,是組合關(guān)系,并非替換關(guān)系
3. 產(chǎn)生背景-見(jiàn)溫少訪談: ? ?http://www.iteye.com/magazines/90 4. 各種詳細(xì)用法: ??http://www.cnblogs.com/niejunlei/p/5977895.html 5. maven依賴: <dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.0.9</version></dependency> <dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.0.9</version></dependency> 6. ?config.properties配置: #druid druid.initialSize=10 druid.minIdle=10 druid.maxActive=50 druid.maxWait=60000 druid.timeBetweenEvictionRunsMillis=60000 druid.minEvictableIdleTimeMillis=300000 druid.validationQuery=SELECT 'x' FROM DUAL druid.testWhileIdle=true druid.testOnBorrow=false druid.testOnReturn=false druid.poolPreparedStatements=true druid.maxPoolPreparedStatementPerConnectionSize=20 druid.filters=wall,stat
7. spring的xml配置文件: <!-- 加載配置文件 --><bean id="configProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean"><property name="fileEncoding" value="UTF-8"/><property name="locations"><list><value>classpath:config.properties</value></list></property></bean><bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer"><property name="properties" ref="configProperties"/></bean><!-- 數(shù)據(jù)庫(kù)連接池 --><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close"><!-- 基本屬性 url、user、password --><property name="url" value="${jdbc.url}" /><property name="username" value="${jdbc.username}" /><property name="password" value="${jdbc.password}" /><property name="driverClassName" value="${jdbc.driver}" /><!-- 配置初始化大小、最小、最大 --><property name="initialSize" value="${druid.initialSize}"/><property name="minIdle" value="${druid.minIdle}"/><property name="maxActive" value="${druid.maxActive}"/><!-- 配置獲取連接等待超時(shí)的時(shí)間 --><property name="maxWait" value="${druid.maxWait}"/><!-- 配置間隔多久才進(jìn)行一次檢測(cè),檢測(cè)需要關(guān)閉的空閑連接,單位是毫秒 --><property name="timeBetweenEvictionRunsMillis" value="${druid.timeBetweenEvictionRunsMillis}" /><!-- 配置一個(gè)連接在池中最小生存的時(shí)間,單位是毫秒 --><property name="minEvictableIdleTimeMillis" value="${druid.minEvictableIdleTimeMillis}" /><property name="validationQuery" value="${druid.validationQuery}" /><property name="testWhileIdle" value="${druid.testWhileIdle}" /><property name="testOnBorrow" value="${druid.testOnBorrow}" /><property name="testOnReturn" value="${druid.testOnReturn}" /><!-- 打開(kāi)PSCache,并且指定每個(gè)連接上PSCache的大小 如果用Oracle,則把poolPreparedStatements配置為true,mysql可以配置為false。--><property name="poolPreparedStatements" value="${druid.poolPreparedStatements}" /><property name="maxPoolPreparedStatementPerConnectionSize" value="${druid.maxPoolPreparedStatementPerConnectionSize}" /><!-- 配置監(jiān)控統(tǒng)計(jì)攔截的filters --><property name="filters" value="${druid.filters}" /></bean> <property name="initialSize" value="${druid.initialSize}"/><property name="minIdle" value="${druid.minIdle}"/><property name="maxActive" value="${druid.maxActive}"/><!-- 配置獲取連接等待超時(shí)的時(shí)間 --><property name="maxWait" value="${druid.maxWait}"/><!-- 配置間隔多久才進(jìn)行一次檢測(cè),檢測(cè)需要關(guān)閉的空閑連接,單位是毫秒 --><property name="timeBetweenEvictionRunsMillis" value="${druid.timeBetweenEvictionRunsMillis}" /><!-- 配置一個(gè)連接在池中最小生存的時(shí)間,單位是毫秒 --><property name="minEvictableIdleTimeMillis" value="${druid.minEvictableIdleTimeMillis}" /><property name="validationQuery" value="${druid.validationQuery}" /><property name="testWhileIdle" value="${druid.testWhileIdle}" /><property name="testOnBorrow" value="${druid.testOnBorrow}" /><property name="testOnReturn" value="${druid.testOnReturn}" /><!-- 打開(kāi)PSCache,并且指定每個(gè)連接上PSCache的大小 如果用Oracle,則把poolPreparedStatements配置為true,mysql可以配置為false。--><property name="poolPreparedStatements" value="${druid.poolPreparedStatements}" /><property name="maxPoolPreparedStatementPerConnectionSize" value="${druid.maxPoolPreparedStatementPerConnectionSize}" /><!-- 配置監(jiān)控統(tǒng)計(jì)攔截的filters --><property name="filters" value="${druid.filters}" /></bean>

?

?

總結(jié)

以上是生活随笔為你收集整理的阿里巴巴 连接池 druid 的使用、maven依赖的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。