Spring Boot配置Druid連接池詳解

一、使用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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 12:12
下一篇 2024-12-12 12:12

相關推薦

發表回復

登錄後才能評論