Spring Boot 集成 Druid 監控數據源

關注Java後端技術全棧html

回覆「面試」獲取全套大廠面試資料mysql

Druid 介紹

Druid 是阿里巴巴開源平臺上的一個項目,整個項目由數據庫鏈接池、插件框架和 SQL 解析器組成,該項目主要是爲了擴展 JDBC 的一些限制,可讓程序員實現一些特殊的需求,好比向密鑰服務請求憑證、統計 SQL 信息、SQL 性能收集、SQL 注入檢查、SQL 翻譯等,程序員能夠經過定製來實現本身須要的功能。一般叫"德魯伊的"程序員

Druid 首先是一個數據庫鏈接池,但它不單單是一個數據庫鏈接池,還包含了一個 ProxyDriver,一系列內置的 JDBC 組件庫,一個 SQL Parser。在 Java 的世界中 Druid 是監控作的最好的數據庫鏈接池,在功能、性能、擴展性方面,也有不錯的表現。web

Druid 有何用?

  • 替換其餘 Java 鏈接池,Druid 提供了一個高效、功能強大、可擴展性好的數據庫鏈接池。面試

  • 能夠監控數據庫訪問性能,Druid 內置提供了一個功能強大的 StatFilter 插件,可以詳細統計 SQL 的執行性能,這對於線上分析數據庫訪問性能有很大幫助。spring

  • 數據庫密碼加密。直接把數據庫密碼寫在配置文件中,這是很差的行爲,容易致使安全問題,DruidDruiver 和 DruidDataSource 都支持 PasswordCallback。sql

  • SQL 執行日誌,Druid 提供了不一樣的 LogFilter,可以支持 Common-Logging、Log4j 和 JdkLog,能夠按須要選擇相應的 LogFilter,監控應用的數據庫訪問狀況。數據庫

  • 擴展 JDBC,若是你要對 JDBC 層有編程的需求,能夠經過 Druid 提供的 Filter 機制,很方便編寫 JDBC 層的擴展插件。編程

Spring  Boot快速集成Druid

阿里也未Druid提供了 Spring Boot Starter。官網這樣解釋:後端

Druid Spring Boot Starter 用於幫助你在 Spring Boot 項目中輕鬆集成 Druid 數據庫鏈接池和監控。

Druid Spring Boot Starter 主要作了哪些事情呢?其實這個組件包很簡單,主要提供了不少自動化的配置,按照 Spring Boot 的理念對不少內容進行了預配置,讓咱們在使用的時候更加的簡單和方便。

添加依賴包

<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
#鏈接池的設置
#初始化時創建物理鏈接的個數
spring.datasource.druid.initial-size=5
#最小鏈接池數量
spring.datasource.druid.min-idle=5
#最大鏈接池數量 maxIdle已經再也不使用
spring.datasource.druid.max-active=20
#獲取鏈接時最大等待時間,單位毫秒
spring.datasource.druid.max-wait=60000
#申請鏈接的時候檢測,若是空閒時間大於timeBetweenEvictionRunsMillis,執行validationQuery檢測鏈接是否有效。
spring.datasource.druid.test-while-idle=true
#既做爲檢測的間隔時間又做爲testWhileIdel執行的依據
spring.datasource.druid.time-between-eviction-runs-millis=60000
#銷燬線程時檢測當前鏈接的最後活動時間和當前時間差大於該值時,關閉當前鏈接
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'
#申請鏈接時會執行validationQuery檢測鏈接是否有效,開啓會下降性能,默認爲true
spring.datasource.druid.test-on-borrow=false
#歸還鏈接時會執行validationQuery檢測鏈接是否有效,開啓會下降性能,默認爲true
spring.datasource.druid.test-on-return=false
#當數據庫拋出不可恢復的異常時,拋棄該鏈接
#spring.datasource.druid.exception-sorter=true
#是否緩存preparedStatement,mysql5.5+建議開啓
#spring.datasource.druid.pool-prepared-statements=true
#當值大於0時poolPreparedStatements會自動修改成true
spring.datasource.druid.max-pool-prepared-statement-per-connection-size=20
#配置擴展插件
spring.datasource.druid.filters=stat,wall
#經過connectProperties屬性來打開mergeSql功能;慢SQL記錄
spring.datasource.druid.connection-properties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
#合併多個DruidDataSource的監控數據
spring.datasource.druid.use-global-data-source-stat=true
#設置訪問druid監控頁的帳號和密碼,默認沒有
#spring.datasource.druid.stat-view-servlet.login-username=admin
#spring.datasource.druid.stat-view-servlet.login-password=admin

而後啓動項目。

訪問地址:http://localhost:8080/druid/webapp.html

88121341f35c9ccceac8d79799824742.png

若是把配置項中

spring.datasource.druid.stat-view-servlet.login-username=admin
spring.datasource.druid.stat-view-servlet.login-password=admin

去掉註釋,再次啓動。

訪問地址:http://localhost:8080/druid/webapp.html

331dc8503cbb7ab1fe84a982ba9a3e08.png

登陸進去

5bed0cb72ee97ccb30f30b55fa5cac46.png

首頁會展現項目使用的 JDK 版本、數據庫驅動、JVM 相關統計信息。根據上面的菜單能夠看出 Druid 的功能很是強大,支持數據源、SQL 監控、SQL 防火牆、URI 監控等不少功能。

咱們這裏請求一下前面文

http://localhost:8080/mybatis

4512287505b1b38d08e83789066d8951.png

點擊SQL監控

194376da31844b0f06be251e8c67cf4c.png

能夠看到SQL的執行狀況,還能夠設置刷新SQL監控的時間。

3de33695466abe654eff6d83bd6eaa28.png

這裏的 SQL 監控會將項目中具體執行的 SQL 打印出來,展現此 SQL 執行了多少次、每次返回多少數據、執行的時間分佈是什麼。這些功能很是的實用,方便咱們在實際生產中查找出慢 SQL,最後對 SQL 進行調優。

OK,今天就分享到此,是否是以爲Spring Boot集成Druid其實仍是蠻簡單的。

碼字不易,望點 在看+分享,謝謝!

推薦閱讀

如何優雅的導出 Excel

終於明白爲何要加 final 關鍵字了!

cc3d69d9f1ec8af33f4559503a16d9a7.png

相關文章
相關標籤/搜索