Spring Boot 資料庫連線池 Druid

2022-01-28 15:39:36 字數 4154 閱讀 3241

資料庫連線是一種關鍵的有限的昂貴的資源,這一點在多使用者的網頁應用程式中體現得尤為突出。對資料庫連線的管理能顯著影響到整個應用程式的伸縮性和健壯性,影響到程式的效能指標。資料庫連線池正是針對這個問題提出來的。資料庫連線池負責分配、管理和釋放資料庫連線,它允許應用程式重複使用乙個現有的資料庫連線,而不是再重新建立乙個;釋放空閒時間超過最大空閒時間的資料庫連線來避免因為沒有釋放資料庫連線而引起的資料庫連線遺漏。這項技術能明顯提高對資料庫操作的效能。

druid:/ˈdruːɪda priest of an ancient celtic religion 德魯伊特(古代凱爾特人的祭司)

druid wiki 介紹挺全面的,有中文教程,常見問題的wiki總結也挺全。

druid連線池是阿里巴巴開源的資料庫連線池專案。druid連線池為監控而生,內建強大的監控功能,監控特性不影響效能。功能強大,能防sql注入,內建loging能診斷hack應用行為

druid 實用的功能:

怎麼配置資料庫連線池?

你可以在程式中直接呼叫druiddatasource,也可以使用spring配置,或者使用jndi配置。

配置 druid 連線池方式主要有兩種:

com.alibaba

druid-spring-boot-starter

1.1.13

filters: stat,wall,log4j

修改對應環境的配置檔案,新增 druid 的支援

mybatis.type-aliases-package==com.michael.mybatisdemo

spring.datasource.url=jdbc:mysql:

spring.datasource.username=cicd

spring.datasource.password=home123*

spring.datasource.driver-class-name=com.mysql.cj.jdbc.driver

server.port=8089

swagger.enable=true

# druid連線池配置

spring.datasource.type=com.alibaba.druid.pool.druiddatasource

spring.datasource.druid.driver-class-name=com.mysql.cj.jdbc.driver

# 初始化大小,最小,最大

spring.datasource.druid.initial-size=5

spring.datasource.druid.max-active=100

spring.datasource.druid.min-idle=5

# 連線超時配置

spring.datasource.druid.max-wait=60000

spring.datasource.druid.pool-prepared-statements=true

spring.datasource.druid.max-pool-prepared-statement-per-connection-size=20

spring.datasource.druid.validation-query=select 1 from dual

spring.datasource.druid.validation-query-timeout=60000

spring.datasource.druid.test-on-borrow=false

spring.datasource.druid.test-on-return=false

spring.datasource.druid.test-while-idle=true

# 多久進行檢測一次空閒的連線,單位毫秒

spring.datasource.druid.time-between-eviction-runs-millis=60000

# 連線最小生存時間

spring.datasource.druid.min-evictable-idle-time-millis=100000

# druid配置監控統計攔截的filters,去掉後監控介面sql無法統計,'wall'用於防火牆

spring.datasource.druid.filters=config,wall,stat

# webstatfilter配置,說明請參考druid wiki,配置_配置webstatfilter

# statviewservlet配置,說明請參考druid wiki,配置_statviewservlet配置

spring.datasource.druid.stat-view-servlet.enabled=true

spring.datasource.druid.stat-view-servlet.url-pattern=/druid/*

spring.datasource.druid.stat-view-servlet.reset-enable=false

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

spring.datasource.druid.stat-view-servlet.login-password=admin123

spring.datasource.druid.stat-view-servlet.allow=127.0.0.1

spring.datasource.druid.stat-view-servlet.deny=192.168.32.139

# druid配置 filter

# 配置statfilter

spring.datasource.druid.filter.stat.db-type=mysql

spring.datasource.druid.filter.stat.log-slow-sql=true

# 配置監控攔截,慢sql,10秒,並且通過日誌輸出執行慢的sql

spring.datasource.druid.filter.stat.slow-sql-millis=5000

# 配置wallfilter

spring.datasource.druid.filter.wall.enabled=true

spring.datasource.druid.filter.wall.db-type=mysql

spring.datasource.druid.filter.wall.config.delete-allow=false

spring.datasource.druid.filter.wall.config.drop-table-allow=false

127.0.0.1:8080/druid/login.html, 進入druid登陸介面,如下圖,輸入在配置類druidconfiguration中配置的使用者名稱和密碼,進入監控介面

我們已經成功的訪問到了監控首頁,可以看到大致包含了如下幾個模組:資料來源、sql監控、sql防火牆、web應用、uri監控、session監控、jsonapi等。

可以看到專案中管理的所有資料來源配置的詳細情況,除了密碼沒有顯示外其他都在。

可以檢視所有的執行sql語句

druid提供了黑白名單的訪問,可以清楚的看到sql防護情況。

可以看到目前執行的web程式的詳細資訊。

可以監控到所有的請求路徑的請求次數、請求時間等其他引數。

可以看到當前的session狀況,建立時間、最後活躍時間、請求次數、請求時間等詳細引數。

通過api的形式訪問druid的監控介面,api介面返回json形式資料。

spring boot教程(七):spring boot整合druid連線池

-【2.0】springboot2配置druid資料來源及監控

springboot連線mysql資料庫相關報錯

mysql版本為5.7 當使用springboot提供的mysql驅動時,執行測試通過。但是報了乙個問題 如下圖 問題的原因是springboot版本推薦使用新的mysql驅動 com.mysql.cj.jdbc.driver 即在配置檔案中將 driver class name com.mysql...

springboot無法連線資料庫問題

springboot使用yml配置檔案配置資料庫連線資訊時,如果資料庫密碼為純數字,需要加雙引號 否則會報access denied for user root localhost 錯誤。spring name crowd mysql datasource url jdbc mysql localh...

spring boot 不連線資料庫啟動,報錯問題

用spring boot 搭建的專案,在配置檔案不連線資料庫啟動專案會報錯。原因在於 spring boot缺省會載入 org.springframework.boot.autoconfigure.jdbc.datasourceautoconfiguration 類,datasourceautoco...