一、前言
當我們在企業開發時,數據庫連接池是一個至關重要的組成部分。一個優秀的數據庫連接池可以顯著提高應用程序的性能和可伸縮性。在JAVA生態系統中,有很多連接池:Druid、HikariCP、C3P0等等,大部分都是使用Druid或者SpringBoot默認HikariCP!
Druid有完整的SQL監控平臺,下面來介紹和搭建一下吧!
二、Druid概念
- Druid:Druid是一個開源的數據庫連接池和監控工具,支持連接池、SQL監控、性能調優、防火墻、SQL注入等功能。
- Druid數據源:Druid提供了一個高性能的數據庫連接池,可以在應用程序中使用Druid數據源來管理數據庫連接。
- SQL監控:Druid可以監控應用程序中的SQL查詢執行情況,包括查詢執行時間、執行次數等信息,并將其顯示在監控頁面上。
- 性能調優:Druid提供了一些性能調優功能,如連接池的配置和管理、慢SQL日志等,幫助開發者優化數據庫訪問性能。
三、Druid優缺點
1、優點
- 高性能:Druid連接池是一個高性能的連接池,可以有效地管理數據庫連接,提高應用程序的性能。
- 監控功能:Druid提供了豐富的監控功能,可以監控SQL執行情況、連接池狀態等,幫助開發者及時發現和解決性能問題。
- 靈活配置:Druid提供了豐富的配置選項,可以根據應用程序的需求進行靈活配置。
- 安全性:Druid提供了防火墻功能,可以阻止惡意SQL注入攻擊。
2、缺點
- 依賴性:將Druid引入項目會增加項目的依賴,可能會影響構建和部署的復雜性。
- 監控頁面廣告:Druid的監控頁面上可能會顯示廣告,有些用戶可能不喜歡這一點。
四、整合SpringBoot
1、導入依賴
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.15</version>
</dependency>
2、配置yaml
為了方便打印慢SQL我們把慢SQL時間調的小一點。
server:
port: 8087
spring:
datasource:
#使用阿里的Druid
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.MySQL.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/test?serverTimezone=UTC
username: root
password:
druid:
statViewServlet: # Druid監控頁面配置
enabled: true # 啟用Druid監控頁面
login-username: root # 監控頁面登錄用戶名
login-password: root # 監控頁面登錄密碼
url-pattern: /druid/* # 監控頁面的訪問URL路徑
web-stat-filter: # Druid Web統計過濾器配置
enabled: true # 啟用Web統計過濾器
session-stat-enable: true # 啟用會話統計功能
session-stat-max-count: 1000 # 最大會話統計數量
filter: # Druid過濾器配置
stat: # SQL統計過濾器配置
enabled: true # 啟用SQL統計過濾器
log-slow-sql: true # 啟用慢SQL日志記錄
slow-sql-millis: 10 # 慢SQL的執行時間閾值(單位:毫秒)
MyBatis-plus:
configuration:
log-impl: org.Apache.ibatis.logging.stdout.StdOutImpl
「強烈注意」:Spring Boot 2.X 版本不再支持配置繼承,多數據源的話每個數據源的所有配置都需要單獨配置,否則配置不會生效!
詳情可以去官方Github上看一下文檔:
Druid官方文檔:https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter
3、測試
實體類什么的都省略了。
@GetMApping("/listTest")
public Result listTest(){
return Result.success(testService.list(Wrappers.<Test>lambdaQuery().like(Test::getName, "d方")));
}
4、監控頁面
訪問路徑:http://localhost:8087/druid/index.html。
點擊SQL監控,查看SQL執行的耗時情況,廣告很顯眼,剛剛也說了這是缺點,覺得不能忍受的可以去掉,百度一搜全是,這里就不展示了哈!
在日志里也會打印:
五、總結
這樣就簡單的完成了SQL監控、慢SQL的查看,進而能夠進行優化,提高系統效率!功能其實挺多的,大家可以挨個點開看看,要開啟Spring監控要使用AOP對特定的接口做單獨的監控!