javascript
Spring Boot 集成 Druid 监控数据源
關(guān)注“Java后端技術(shù)全棧”
回復(fù)“面試”獲取全套大廠面試資料
Druid 介紹
Druid 是阿里巴巴開源平臺上的一個項目,整個項目由數(shù)據(jù)庫連接池、插件框架和 SQL 解析器組成,該項目主要是為了擴(kuò)展 JDBC 的一些限制,可以讓程序員實現(xiàn)一些特殊的需求,比如向密鑰服務(wù)請求憑證、統(tǒng)計 SQL 信息、SQL 性能收集、SQL 注入檢查、SQL 翻譯等,程序員可以通過定制來實現(xiàn)自己需要的功能。通常叫"德魯伊的"
Druid 首先是一個數(shù)據(jù)庫連接池,但它不僅僅是一個數(shù)據(jù)庫連接池,還包含了一個 ProxyDriver,一系列內(nèi)置的 JDBC 組件庫,一個 SQL Parser。在 Java 的世界中 Druid 是監(jiān)控做的最好的數(shù)據(jù)庫連接池,在功能、性能、擴(kuò)展性方面,也有不錯的表現(xiàn)。
Druid 有何用?
替換其他 Java 連接池,Druid 提供了一個高效、功能強(qiáng)大、可擴(kuò)展性好的數(shù)據(jù)庫連接池。
可以監(jiān)控數(shù)據(jù)庫訪問性能,Druid 內(nèi)置提供了一個功能強(qiáng)大的 StatFilter 插件,能夠詳細(xì)統(tǒng)計 SQL 的執(zhí)行性能,這對于線上分析數(shù)據(jù)庫訪問性能有很大幫助。
數(shù)據(jù)庫密碼加密。直接把數(shù)據(jù)庫密碼寫在配置文件中,這是不好的行為,容易導(dǎo)致安全問題,DruidDruiver 和 DruidDataSource 都支持 PasswordCallback。
SQL 執(zhí)行日志,Druid 提供了不同的 LogFilter,能夠支持 Common-Logging、Log4j 和 JdkLog,可以按需要選擇相應(yīng)的 LogFilter,監(jiān)控應(yīng)用的數(shù)據(jù)庫訪問情況。
擴(kuò)展 JDBC,如果你要對 JDBC 層有編程的需求,可以通過 Druid 提供的 Filter 機(jī)制,很方便編寫 JDBC 層的擴(kuò)展插件。
Spring ?Boot快速集成Druid
阿里也未Druid提供了 Spring Boot Starter。官網(wǎng)這樣解釋:
Druid Spring Boot Starter 用于幫助你在 Spring Boot 項目中輕松集成 Druid 數(shù)據(jù)庫連接池和監(jiān)控。
Druid Spring Boot Starter 主要做了哪些事情呢?其實這個組件包很簡單,主要提供了很多自動化的配置,按照 Spring Boot 的理念對很多內(nèi)容進(jìn)行了預(yù)配置,讓我們在使用的時候更加的簡單和方便。
添加依賴包
<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.10</version> </dependency> <!--自啟動Druid管理后臺--> <dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.10</version> </dependency>application.properties中添加druid的配置項
properties #config?druid #連接池的設(shè)置 #初始化時建立物理連接的個數(shù) spring.datasource.druid.initial-size=5 #最小連接池數(shù)量 spring.datasource.druid.min-idle=5 #最大連接池數(shù)量?maxIdle已經(jīng)不再使用 spring.datasource.druid.max-active=20 #獲取連接時最大等待時間,單位毫秒 spring.datasource.druid.max-wait=60000 #申請連接的時候檢測,如果空閑時間大于timeBetweenEvictionRunsMillis,執(zhí)行validationQuery檢測連接是否有效。 spring.datasource.druid.test-while-idle=true #既作為檢測的間隔時間又作為testWhileIdel執(zhí)行的依據(jù) spring.datasource.druid.time-between-eviction-runs-millis=60000 #銷毀線程時檢測當(dāng)前連接的最后活動時間和當(dāng)前時間差大于該值時,關(guān)閉當(dāng)前連接 spring.datasource.druid.min-evictable-idle-time-millis=30000 #用來檢測連接是否有效的sql?必須是一個查詢語句 #mysql中為?select?'x' #oracle中為?select?1?from?dual spring.datasource.druid.validation-query=select?'x' #申請連接時會執(zhí)行validationQuery檢測連接是否有效,開啟會降低性能,默認(rèn)為true spring.datasource.druid.test-on-borrow=false #歸還連接時會執(zhí)行validationQuery檢測連接是否有效,開啟會降低性能,默認(rèn)為true spring.datasource.druid.test-on-return=false #當(dāng)數(shù)據(jù)庫拋出不可恢復(fù)的異常時,拋棄該連接 #spring.datasource.druid.exception-sorter=true #是否緩存preparedStatement,mysql5.5+建議開啟 #spring.datasource.druid.pool-prepared-statements=true #當(dāng)值大于0時poolPreparedStatements會自動修改為true spring.datasource.druid.max-pool-prepared-statement-per-connection-size=20 #配置擴(kuò)展插件 spring.datasource.druid.filters=stat,wall #通過connectProperties屬性來打開mergeSql功能;慢SQL記錄 spring.datasource.druid.connection-properties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500 #合并多個DruidDataSource的監(jiān)控數(shù)據(jù) spring.datasource.druid.use-global-data-source-stat=true #設(shè)置訪問druid監(jiān)控頁的賬號和密碼,默認(rèn)沒有 #spring.datasource.druid.stat-view-servlet.login-username=admin #spring.datasource.druid.stat-view-servlet.login-password=admin然后啟動項目。
訪問地址:http://localhost:8080/druid/webapp.html
如果把配置項中
去掉注釋,再次啟動。
訪問地址:http://localhost:8080/druid/webapp.html
登錄進(jìn)去
首頁會展示項目使用的 JDK 版本、數(shù)據(jù)庫驅(qū)動、JVM 相關(guān)統(tǒng)計信息。根據(jù)上面的菜單可以看出 Druid 的功能非常強(qiáng)大,支持?jǐn)?shù)據(jù)源、SQL 監(jiān)控、SQL 防火墻、URI 監(jiān)控等很多功能。
我們這里請求一下前面文
http://localhost:8080/mybatis
點擊SQL監(jiān)控
可以看到SQL的執(zhí)行情況,還可以設(shè)置刷新SQL監(jiān)控的時間。
這里的 SQL 監(jiān)控會將項目中具體執(zhí)行的 SQL 打印出來,展示此 SQL 執(zhí)行了多少次、每次返回多少數(shù)據(jù)、執(zhí)行的時間分布是什么。這些功能非常的實用,方便我們在實際生產(chǎn)中查找出慢 SQL,最后對 SQL 進(jìn)行調(diào)優(yōu)。
OK,今天就分享到此,是不是覺得Spring Boot集成Druid其實還是蠻簡單的。
IT技術(shù)分享社區(qū)
個人博客網(wǎng)站:https://programmerblog.xyz
文章推薦程序員效率:畫流程圖常用的工具程序員效率:整理常用的在線筆記軟件遠(yuǎn)程辦公:常用的遠(yuǎn)程協(xié)助軟件,你都知道嗎?51單片機(jī)程序下載、ISP及串口基礎(chǔ)知識硬件:斷路器、接觸器、繼電器基礎(chǔ)知識
總結(jié)
以上是生活随笔為你收集整理的Spring Boot 集成 Druid 监控数据源的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 腾讯翻译君 VS 谷歌翻译
- 下一篇: Python 基础入门--简介和环境配置