druid數(shù)據(jù)源介紹 阿里巴巴數(shù)據(jù)源常見(jiàn)問(wèn)題解答

druid現(xiàn)在是目前做的最好,使用最為廣泛的數(shù)據(jù)源,可能剛接觸數(shù)據(jù)源會(huì)有一些些陌生,來(lái)看看數(shù)據(jù)源的阿里巴巴 druid 使用常見(jiàn)問(wèn)題吧!
本文原地址:https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98
歡迎大家使用Druid幢哨,常見(jiàn)問(wèn)題在這里解答,希望對(duì)大家有所幫助。

1. Druid是什么稠通?

Druid是Java語(yǔ)言中最好的數(shù)據(jù)庫(kù)連接池脱盲。Druid能夠提供強(qiáng)大的監(jiān)控和擴(kuò)展功能香府。

2. 在哪里下載druid

3. 怎么獲取Druid的源碼

Druid是一個(gè)開(kāi)源項(xiàng)目谷暮,源碼托管在github上夫椭,源代碼倉(cāng)庫(kù)地址是 https://github.com/alibaba/druid 恩急。同時(shí)每次Druid發(fā)布正式版本和快照的時(shí)候杉畜,都會(huì)把源碼打包,你可以從上面的下載地址中找到相關(guān)版本的源碼

4. 怎么配置maven

Druid 0.1.18 之后版本都發(fā)布到maven中央倉(cāng)庫(kù)中衷恭,所以你只需要在項(xiàng)目的pom.xml中加上dependency就可以了此叠。例如:

    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>${druid-version}</version>
    </dependency>

也可以選擇 Maven倉(cāng)庫(kù)查找公共的倉(cāng)庫(kù)地址: http://www.mvnrepository.com/artifact/com.alibaba/druid

5. 怎么打開(kāi)Druid的監(jiān)控統(tǒng)計(jì)功能

Druid的監(jiān)控統(tǒng)計(jì)功能是通過(guò)filter-chain擴(kuò)展實(shí)現(xiàn),如果你要打開(kāi)監(jiān)控統(tǒng)計(jì)功能随珠,配置StatFilter灭袁,具體看這里:https://github.com/alibaba/druid/wiki/配置_StatFilter

6. 怎樣使用Druid的內(nèi)置監(jiān)控頁(yè)面

內(nèi)置監(jiān)控頁(yè)面是一個(gè)Servlet猬错,具體配置看這里:
https://github.com/alibaba/druid/wiki/配置_StatViewServlet配置

7. 內(nèi)置監(jiān)控中的Web和Spring關(guān)聯(lián)監(jiān)控怎么配置?

8. 怎么配置防御SQL注入攻擊

Druid提供了WallFilter茸歧,它是基于SQL語(yǔ)義分析來(lái)實(shí)現(xiàn)防御SQL注入攻擊的倦炒。具體配置看這里:
https://github.com/alibaba/druid/wiki/配置-wallfilter

9. Druid有沒(méi)有參考配置

不同的業(yè)務(wù)場(chǎng)景需求不同,你可以使用我們的參考配置软瞎,但建議你仔細(xì)閱讀相關(guān)文檔逢唤,了解清楚之后做定制配置。
https://github.com/alibaba/druid/wiki/配置_DruidDataSource參考配置

10. 我想日志記錄JDBC執(zhí)行的SQL涤浇,如何配置

Druid提供了Log4jFilter鳖藕、CommonsLogFilter和Slf4jFilter,具體配置看這里
https://github.com/alibaba/druid/wiki/配置_LogFilter

11. 我的程序可能產(chǎn)生連接泄漏了只锭,有什么辦法著恩?

Druid提供了多種監(jiān)測(cè)連接泄漏的手段,具體看這里:
https://github.com/alibaba/druid/wiki/連接泄漏監(jiān)測(cè)

12. 在Druid中使用PSCache會(huì)有內(nèi)存占用過(guò)大問(wèn)題么纹烹?

連接Oracle數(shù)據(jù)庫(kù)页滚,打開(kāi)PSCache,在其他的數(shù)據(jù)庫(kù)連接池都會(huì)存在內(nèi)存占用過(guò)多的問(wèn)題铺呵,Druid是唯一解決這個(gè)問(wèn)題的連接池裹驰。具體看這里:
https://github.com/alibaba/druid/wiki/Oracle數(shù)據(jù)庫(kù)下PreparedStatementCache內(nèi)存問(wèn)題解決方案

13. 有沒(méi)有和其他數(shù)據(jù)庫(kù)連接池的對(duì)比?

14. 從其他連接池遷移要注意什么片挂?

15. Druid中有沒(méi)有類(lèi)似Jboss DataSource中的ExceptionSorter

ExceptionSorter是JBoss DataSource中的優(yōu)秀特性幻林,Druid也有一樣功能的ExceptionSorter,但不用手動(dòng)配置音念,自動(dòng)識(shí)別生效的沪饺。具體看這里:https://github.com/alibaba/druid/wiki/ExceptionSorter_cn

16. Druid中的maxIdle為什么是沒(méi)用的?

maxIdle是Druid為了方便DBCP用戶遷移而增加的闷愤,maxIdle是一個(gè)混亂的概念整葡。連接池只應(yīng)該有maxPoolSize和minPoolSize,druid只保留了maxActive和minIdle讥脐,分別相當(dāng)于maxPoolSize和minPoolSize遭居。

17. 我的應(yīng)用配置的是JNDI數(shù)據(jù)源,可以用DruidDataSource么旬渠?

DruidDataSource支持JNDI配置俱萍,具體看這里:https://github.com/alibaba/druid/wiki/配置_JNDI_Tomcat

具體實(shí)現(xiàn)的類(lèi)是這個(gè):com.alibaba.druid.pool.DruidDataSourceFactory,你可以閱讀代碼加深理解告丢。

18. 我的應(yīng)用已使用DBCP枪蘑,是代碼中寫(xiě)死的,怎樣更換為Druid?

可以的岳颇,Druid提供了一個(gè)中完全平滑遷移DBCP的辦法照捡。

這種用法麻敌,使得可以在一些非自己開(kāi)發(fā)的應(yīng)用中使用Druid,例如在sonar中部署druid掂摔,sonar是一個(gè)使用jruby開(kāi)發(fā)的web應(yīng)用术羔,寫(xiě)死了DBCP,只能夠通過(guò)這種方法來(lái)更換乙漓。

19. 我想試用快照版本级历,怎么獲取叭披?

直接獲取快照版本的地址是:http://code.alibabatech.com/mvn/snapshots/com/alibaba/druid/ 寥殖,使用快照版本建議加入我們QQ群 92748305,遇到問(wèn)題直接反饋給我們涩蜘。

20. 有一些SQL執(zhí)行很慢嚼贡,我希望日志記錄下來(lái),怎么設(shè)置同诫?

在StatFilter配置中有慢SQL執(zhí)行日志記錄粤策,看這里 https://github.com/alibaba/druid/wiki/配置_StatFilter

21. 我希望加密我的數(shù)據(jù)庫(kù)密碼怎么辦?

運(yùn)維和DBA都不希望把密碼明文直接寫(xiě)在配置文件中误窖,Druid提供了數(shù)據(jù)庫(kù)密碼加密的功能叮盘。具體看這里:
https://github.com/alibaba/druid/wiki/使用ConfigFilter

22. 如何參與Druid的開(kāi)發(fā)

Druid是一個(gè)通過(guò)github開(kāi)源的項(xiàng)目,github的特性霹俺,使得你很容易參與其中柔吼。這里有詳細(xì)說(shuō)明
https://github.com/alibaba/druid/wiki/如何參與

23. Druid的發(fā)布周期是怎樣?

Druid是一個(gè)活躍的項(xiàng)目丙唧,長(zhǎng)期維護(hù)愈魏。每個(gè)月有一個(gè)發(fā)布窗口,除非遇到重大bug和非常緊急的需求想际,否則都是每個(gè)月最多發(fā)布一次培漏。如果沒(méi)有足夠多的需求,發(fā)布窗口就不會(huì)被使用沼琉。

24. 如果DruidDataSource在init的時(shí)候失敗了北苟,不再使用桩匪,是否需要close

是的打瘪,如果DruidDataSource不再使用,必須調(diào)用close來(lái)釋放資源,釋放的資源包括關(guān)閉Create和Destory線程闺骚。

25. DruidDataSource支持哪些數(shù)據(jù)庫(kù)彩扔?

理論上說(shuō),支持所有有jdbc驅(qū)動(dòng)的數(shù)據(jù)庫(kù)僻爽。實(shí)際測(cè)試過(guò)的有

數(shù)據(jù)庫(kù) 支持狀態(tài)
mysql 支持虫碉,大規(guī)模使用
oracle 支持,大規(guī)模使用
sqlserver 支持
postgres 支持
db2 支持
h2 支持
derby 支持
sqlite 支持
sybase 支持

26. Oracle下jdbc executeBatch時(shí)胸梆,更新行數(shù)計(jì)算不正確

使用jdbc的executeBatch 方法敦捧,如果數(shù)據(jù)庫(kù)為oracle,則無(wú)論是否成功更新到數(shù)據(jù)碰镜,返回值都是-2兢卵,而不是真正被sql更新到的記錄數(shù),這是Oracle JDBC Driver的問(wèn)題绪颖,Druid不作特殊處理秽荤。

27. Druid如何自動(dòng)根據(jù)URL自動(dòng)識(shí)別DriverClass的

Druid是根據(jù)url前綴來(lái)識(shí)別DriverClass的,這樣使得配置更方便簡(jiǎn)潔柠横。

前綴 DriverCLass 描述信息
jdbc:odps com.aliyun.odps.jdbc.OdpsDriver
jdbc:derby org.apache.derby.jdbc.EmbeddedDriver
jdbc:mysql com.mysql.jdbc.Driver
jdbc:oracle oracle.jdbc.driver.OracleDriver
jdbc:microsoft com.microsoft.jdbc.sqlserver.SQLServerDriver
jdbc:sybase:Tds com.sybase.jdbc2.jdbc.SybDriver
jdbc:jtds net.sourceforge.jtds.jdbc.Driver
jdbc:postgresql org.postgresql.Driver
jdbc:fake com.alibaba.druid.mock.MockDriver
jdbc:mock com.alibaba.druid.mock.MockDriver
jdbc:hsqldb org.hsqldb.jdbcDriver
jdbc:db2 COM.ibm.db2.jdbc.app.DB2DriverD B2的JDBC Driver十分混亂窃款,這個(gè)匹配不一定對(duì)
jdbc:sqlite org.sqlite.JDBC
jdbc:ingres com.ingres.jdbc.IngresDriver
jdbc:h2 org.h2.Driver
jdbc:mckoi com.mckoi.JDBCDriver
jdbc:cloudscape COM.cloudscape.core.JDBCDriver
jdbc:informix-sqli com.informix.jdbc.IfxDriver
jdbc:timesten com.timesten.jdbc.TimesTenDriver
jdbc:as400 com.ibm.as400.access.AS400JDBCDriver
jdbc:sapdb com.sap.dbtech.jdbc.DriverSapDB
jdbc:JSQLConnect com.jnetdirect.jsql.JSQLDriver
jdbc:JTurbo com.newatlanta.jturbo.driver.Driver
jdbc:firebirdsql org.firebirdsql.jdbc.FBDriver
jdbc:interbase interbase.interclient.Driver
jdbc:pointbase com.pointbase.jdbc.jdbcUniversalDriver
jdbc:edbc ca.edbc.jdbc.EdbcDriver
jdbc:mimer:multi1 com.mimer.jdbc.Driver

28. 如何保存監(jiān)控記錄

https://github.com/alibaba/druid/wiki/怎么保存Druid的監(jiān)控記錄

29. 我想Log輸出SQL執(zhí)行的信息怎么辦?

https://github.com/alibaba/druid/wiki/配置_LogFilter

30. 如何配置Druid內(nèi)置的log實(shí)現(xiàn)

https://github.com/alibaba/druid/wiki/配置druid內(nèi)置的log實(shí)現(xiàn)

31. 如何在Spring Boot中集成Druid連接池和監(jiān)控牍氛?

使用Druid Spring Boot Starter晨继,文檔地址:https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter

31. 如何在Spring Boot中添加自定義WallConfig、Filter 糜俗?

https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter#如何配置-filter

32. 如何在 Spring Boot 中配置數(shù)據(jù)庫(kù)密碼加密踱稍?

  1. 先看常見(jiàn)問(wèn)題#21,如何生成加密后的密碼及秘鑰:我希望加密我的數(shù)據(jù)庫(kù)密碼怎么辦悠抹?
  2. 進(jìn)行配置
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
# 生成的加密后的密碼(原密碼 123456)
spring.datasource.password=WVMjPhfXQrIsWRo0/RCqAVvYtTU9WNVToKJohb8AlUmHwnV6vwFL+FM2CNFDMJwGHW1iCmyaUlF+sgvFdogqEA==
# 生成的公鑰
public-key=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAIiwHpFrDijV+GzwRTzWJk8D3j3jFfhsMFJ/7k1NTvBuLgL+TdIHgaMNOIEjHpXzuvX38J3FtOK8hLrySncVGOMCAwEAAQ==
# 配置 connection-properties珠月,啟用加密,配置公鑰楔敌。
spring.datasource.druid.connection-properties=config.decrypt=true;config.decrypt.key=${public-key}
# 啟用ConfigFilter
spring.datasource.druid.filter.config.enabled=true

33. 如何設(shè)置為讓連接池知道數(shù)據(jù)庫(kù)已經(jīng)斷開(kāi)了啤挎,并且自動(dòng)測(cè)試連接查詢(xún)

加入以下配置:

<!-- 用來(lái)檢測(cè)連接是否有效的sql,要求是一個(gè)查詢(xún)語(yǔ)句卵凑,常用select 'x'庆聘。如果validationQuery為null,testOnBorrow勺卢、testOnReturn伙判、testWhileIdle都不會(huì)起作用。 -->
<property name="validationQuery" value="SELECT 1" />
<property name="testOnBorrow" value="false" />
<property name="testOnReturn" value="false" />
<property name="testWhileIdle" value="true" />

出錯(cuò)的異常信息摘要: Could not open JDBC Connection for transaction黑忱; nested exception is ...jdbc4... No operation allowed after connection closed;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末宴抚,一起剝皮案震驚了整個(gè)濱河市勒魔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌菇曲,老刑警劉巖冠绢,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異常潮,居然都是意外死亡弟胀,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門(mén)喊式,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)孵户,“玉大人,你說(shuō)我怎么就攤上這事岔留⊙咏欤” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵贸诚,是天一觀的道長(zhǎng)方庭。 經(jīng)常有香客問(wèn)我,道長(zhǎng)酱固,這世上最難降的妖魔是什么械念? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮运悲,結(jié)果婚禮上龄减,老公的妹妹穿的比我還像新娘。我一直安慰自己班眯,他們只是感情好希停,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著署隘,像睡著了一般宠能。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上磁餐,一...
    開(kāi)封第一講書(shū)人閱讀 49,166評(píng)論 1 284
  • 那天违崇,我揣著相機(jī)與錄音,去河邊找鬼诊霹。 笑死羞延,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的脾还。 我是一名探鬼主播伴箩,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼鄙漏!你這毒婦竟也來(lái)了嗤谚?” 一聲冷哼從身側(cè)響起砂客,我...
    開(kāi)封第一講書(shū)人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎呵恢,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體媚创,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡渗钉,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了钞钙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鳄橘。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖芒炼,靈堂內(nèi)的尸體忽然破棺而出瘫怜,到底是詐尸還是另有隱情,我是刑警寧澤本刽,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布鲸湃,位于F島的核電站,受9級(jí)特大地震影響子寓,放射性物質(zhì)發(fā)生泄漏暗挑。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一斜友、第九天 我趴在偏房一處隱蔽的房頂上張望炸裆。 院中可真熱鬧,春花似錦鲜屏、人聲如沸烹看。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)惯殊。三九已至,卻和暖如春也殖,著一層夾襖步出監(jiān)牢的瞬間靠胜,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工毕源, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留浪漠,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓霎褐,卻偏偏與公主長(zhǎng)得像址愿,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子冻璃,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容