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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring Boot 集成 Druid 监控数据源

發(fā)布時(shí)間:2023/12/10 javascript 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring Boot 集成 Druid 监控数据源 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

關(guān)注Java后端技術(shù)全棧

回復(fù)“面試”獲取全套大廠面試資料

Druid 介紹

Druid 是阿里巴巴開源平臺(tái)上的一個(gè)項(xiàng)目,整個(gè)項(xiàng)目由數(shù)據(jù)庫連接池、插件框架和 SQL 解析器組成,該項(xiàng)目主要是為了擴(kuò)展 JDBC 的一些限制,可以讓程序員實(shí)現(xiàn)一些特殊的需求,比如向密鑰服務(wù)請(qǐng)求憑證、統(tǒng)計(jì) SQL 信息、SQL 性能收集、SQL 注入檢查、SQL 翻譯等,程序員可以通過定制來實(shí)現(xiàn)自己需要的功能。通常叫"德魯伊的"

Druid 首先是一個(gè)數(shù)據(jù)庫連接池,但它不僅僅是一個(gè)數(shù)據(jù)庫連接池,還包含了一個(gè) ProxyDriver,一系列內(nèi)置的 JDBC 組件庫,一個(gè) SQL Parser。在 Java 的世界中 Druid 是監(jiān)控做的最好的數(shù)據(jù)庫連接池,在功能、性能、擴(kuò)展性方面,也有不錯(cuò)的表現(xiàn)。

Druid 有何用?

  • 替換其他 Java 連接池,Druid 提供了一個(gè)高效、功能強(qiáng)大、可擴(kuò)展性好的數(shù)據(jù)庫連接池。

  • 可以監(jiān)控?cái)?shù)據(jù)庫訪問性能,Druid 內(nèi)置提供了一個(gè)功能強(qiáng)大的 StatFilter 插件,能夠詳細(xì)統(tǒng)計(jì) SQL 的執(zhí)行性能,這對(duì)于線上分析數(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,如果你要對(duì) JDBC 層有編程的需求,可以通過 Druid 提供的 Filter 機(jī)制,很方便編寫 JDBC 層的擴(kuò)展插件。

Spring ?Boot快速集成Druid

阿里也未Druid提供了 Spring Boot Starter。官網(wǎng)這樣解釋:

Druid Spring Boot Starter 用于幫助你在 Spring Boot 項(xiàng)目中輕松集成 Druid 數(shù)據(jù)庫連接池和監(jiān)控。

Druid Spring Boot Starter 主要做了哪些事情呢?其實(shí)這個(gè)組件包很簡(jiǎn)單,主要提供了很多自動(dòng)化的配置,按照 Spring Boot 的理念對(duì)很多內(nèi)容進(jìn)行了預(yù)配置,讓我們?cè)谑褂玫臅r(shí)候更加的簡(jiǎn)單和方便。

添加依賴包

<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.10</version> </dependency> <!--自啟動(dòng)Druid管理后臺(tái)--> <dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.10</version> </dependency>

application.properties中添加druid的配置項(xiàng)

properties #config?druid #連接池的設(shè)置 #初始化時(shí)建立物理連接的個(gè)數(shù) spring.datasource.druid.initial-size=5 #最小連接池?cái)?shù)量 spring.datasource.druid.min-idle=5 #最大連接池?cái)?shù)量?maxIdle已經(jīng)不再使用 spring.datasource.druid.max-active=20 #獲取連接時(shí)最大等待時(shí)間,單位毫秒 spring.datasource.druid.max-wait=60000 #申請(qǐng)連接的時(shí)候檢測(cè),如果空閑時(shí)間大于timeBetweenEvictionRunsMillis,執(zhí)行validationQuery檢測(cè)連接是否有效。 spring.datasource.druid.test-while-idle=true #既作為檢測(cè)的間隔時(shí)間又作為testWhileIdel執(zhí)行的依據(jù) spring.datasource.druid.time-between-eviction-runs-millis=60000 #銷毀線程時(shí)檢測(cè)當(dāng)前連接的最后活動(dòng)時(shí)間和當(dāng)前時(shí)間差大于該值時(shí),關(guān)閉當(dāng)前連接 spring.datasource.druid.min-evictable-idle-time-millis=30000 #用來檢測(cè)連接是否有效的sql?必須是一個(gè)查詢語句 #mysql中為?select?'x' #oracle中為?select?1?from?dual spring.datasource.druid.validation-query=select?'x' #申請(qǐng)連接時(shí)會(huì)執(zhí)行validationQuery檢測(cè)連接是否有效,開啟會(huì)降低性能,默認(rèn)為true spring.datasource.druid.test-on-borrow=false #歸還連接時(shí)會(huì)執(zhí)行validationQuery檢測(cè)連接是否有效,開啟會(huì)降低性能,默認(rèn)為true spring.datasource.druid.test-on-return=false #當(dāng)數(shù)據(jù)庫拋出不可恢復(fù)的異常時(shí),拋棄該連接 #spring.datasource.druid.exception-sorter=true #是否緩存preparedStatement,mysql5.5+建議開啟 #spring.datasource.druid.pool-prepared-statements=true #當(dāng)值大于0時(shí)poolPreparedStatements會(huì)自動(dòng)修改為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 #合并多個(gè)DruidDataSource的監(jiān)控?cái)?shù)據(jù) spring.datasource.druid.use-global-data-source-stat=true #設(shè)置訪問druid監(jiān)控頁的賬號(hào)和密碼,默認(rèn)沒有 #spring.datasource.druid.stat-view-servlet.login-username=admin #spring.datasource.druid.stat-view-servlet.login-password=admin

然后啟動(dòng)項(xiàng)目。

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

如果把配置項(xiàng)中

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

去掉注釋,再次啟動(dòng)。

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

登錄進(jìn)去

首頁會(huì)展示項(xiàng)目使用的 JDK 版本、數(shù)據(jù)庫驅(qū)動(dòng)、JVM 相關(guān)統(tǒng)計(jì)信息。根據(jù)上面的菜單可以看出 Druid 的功能非常強(qiáng)大,支持?jǐn)?shù)據(jù)源、SQL 監(jiān)控、SQL 防火墻、URI 監(jiān)控等很多功能。

我們這里請(qǐng)求一下前面文

http://localhost:8080/mybatis

點(diǎn)擊SQL監(jiān)控

可以看到SQL的執(zhí)行情況,還可以設(shè)置刷新SQL監(jiān)控的時(shí)間。

這里的 SQL 監(jiān)控會(huì)將項(xiàng)目中具體執(zhí)行的 SQL 打印出來,展示此 SQL 執(zhí)行了多少次、每次返回多少數(shù)據(jù)、執(zhí)行的時(shí)間分布是什么。這些功能非常的實(shí)用,方便我們?cè)趯?shí)際生產(chǎn)中查找出慢 SQL,最后對(duì) SQL 進(jìn)行調(diào)優(yōu)。

OK,今天就分享到此,是不是覺得Spring Boot集成Druid其實(shí)還是蠻簡(jiǎn)單的。

IT技術(shù)分享社區(qū)

個(gè)人博客網(wǎng)站:https://programmerblog.xyz

文章推薦程序員效率:畫流程圖常用的工具程序員效率:整理常用的在線筆記軟件遠(yuǎn)程辦公:常用的遠(yuǎn)程協(xié)助軟件,你都知道嗎?51單片機(jī)程序下載、ISP及串口基礎(chǔ)知識(shí)硬件:斷路器、接觸器、繼電器基礎(chǔ)知識(shí)

總結(jié)

以上是生活随笔為你收集整理的Spring Boot 集成 Druid 监控数据源的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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