一、使用Spring Boot配置Druid連接池
在Spring Boot應用程序中,使用Druid連接池需要使用Druid起步依賴。 首先,在pom.xml文件中添加以下配置:
<dependencies> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.21</version> </dependency> </dependencies>
接下來,在application.properties或application.yml文件中配置Druid的相關屬性:
# 數據源綁定在JNDI上(負責人請注意設置合適的jndi和對應的數據源) spring.datasource.jndi-name=... # ============================================================== # Druid 配置 # ============================================================== # 指定數據源類型,常用MySQL、Oracle、H2等 # 建議配置為spring.datasource.type=com.alibaba.druid.pool.DruidDataSource # Tomcat 資料庫連接池配置為org.apache.tomcat.jdbc.pool.DataSource spring.datasource.type=com.alibaba.druid.pool.DruidDataSource # 資料庫連接地址 spring.datasource.url=jdbc:mysql://localhost:3306/db_name?Unicode=true&characterEncoding=UTF-8 # 資料庫連接用戶名 spring.datasource.username=username # 資料庫連接密碼 spring.datasource.password=password # 資料庫連接池初始化大小 spring.datasource.initial-size=5 # 資料庫連接池最小連接數 spring.datasource.min-idle=5 # 資料庫連接池最大連接數 spring.datasource.max-active=20 # 獲取連接最大等待時間(單位毫秒) spring.datasource.max-wait=30000 # 配置獲取連接等待超時處理 spring.datasource.connection-properties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 # 配置Druid監控 spring.datasource.druid.stat-view-servlet.enabled=true spring.datasource.druid.stat-view-servlet.url-pattern=/druid/* spring.datasource.druid.web-stat-filter.enabled=true spring.datasource.druid.web-stat-filter.url-pattern=/* spring.datasource.druid.web-stat-filter.exclusions=*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*
Druid連接池的特點是能夠提供詳細的統計信息和數據,可以在應用程序中方便地實現監視和調優,從而達到更好的性能。
二、Druid連接池監控
Druid連接池提供了一個內置的監視器和一個可選的過濾器,可以幫助監視資料庫連接池中的連接、事務、緩存和其他相關的統計信息。在使用Spring Boot配置Druid連接池時,只需要在配置文件(application.yml 或 application.properties)中添加配置即可。
監控連接池的統計信息,需要配置一些參數,如下所示:
# 開啟Druid監控統計功能 spring.datasource.druid.stat-view-servlet.enabled=true # 配置監控統計攔截的URL,如果不配置,默認監控所有請求,可以配置多個,多個逗號隔開 spring.datasource.druid.stat-view-servlet.url-pattern=/druid/* # 過濾一些不監控的連接 spring.datasource.druid.web-stat-filter.exclusions=/static/*,*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*
Druid連接池監控信息的訪問地址為:http://localhost:8080/druid/index.html。
三、Druid連接池性能優化
1. 開啟預處理
在高並發場景下,開啟預處理可以顯著提高性能。在Spring Boot中,可以使用以下配置開啟預處理:
mybatis.configuration.default-executor-type=REUSE spring.datasource.druid.initial-size=1 spring.datasource.druid.max-active=20 spring.datasource.druid.max-wait=60000 spring.datasource.druid.test-on-borrow=false spring.datasource.druid.test-while-idle=true spring.datasource.druid.pool-prepared-statements=true spring.datasource.druid.max-pool-prepared-statement-per-connection-size=20
2. 使用DruidStatInterceptor統計SQL執行時間
可以使用Druid提供的攔截器DruidStatInterceptor來統計SQL執行時間。
@Configuration public class DruidConfig { @Bean public DruidStatInterceptor druidStatInterceptor() { return new DruidStatInterceptor(); } @Bean public DruidStatInterceptorConfigurer druidStatInterceptorConfigurer() { return new DruidStatInterceptorConfigurer(); } private static class DruidStatInterceptorConfigurer extends AbstractInterceptorConfigurer { @Override public void configure(InterceptorRegistry registry) { registry.addInterceptor(druidStatInterceptor()); } } }
3. 配置timeBetweenEvictionRunsMillis
可以通過配置timeBetweenEvictionRunsMillis,使Druid連接池定期檢查連接池中的連接是否有效,通過連接池中的心跳線程(keepAlive)進行檢查。如果連接超過指定的時長沒有使用,Druid連接池會自動關閉這些連接。一般建議設置該值為30秒到1分鐘之間。
druid.timeBetweenEvictionRunsMillis=120000
4. 配置testWhileIdle和validationQuery
可以通過配置testWhileIdle和validationQuery,使Druid連接池定期檢查連接池中的連接是否有效,驗證SQL是否可用。如果連接超過指定的時長沒有使用,Druid連接池也會自動關閉這些連接。
spring.datasource.druid.testWhileIdle=true spring.datasource.druid.validationQuery=SELECT 1 FROM DUAL
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/238660.html