天天看點

java判斷連接配接逾時_springboot2內建性能最強jdbc資料庫資料源連接配接池 1.hikariCp 2.hikariCp的一些配置項3.springboot2內建hikariCp 4.總結

我是 碼農小胖哥。天天有程式設計幹貨分享。覺得寫的不錯可以點個贊,轉發一下,關注一下。
java判斷連接配接逾時_springboot2內建性能最強jdbc資料庫資料源連接配接池 1.hikariCp 2.hikariCp的一些配置項3.springboot2內建hikariCp 4.總結

1.hikariCp

hickari來自日文,翻譯過來就是“光”的意思,這個是為了說明該連接配接池的性能像光一樣,性能非常好。事實上其性能确實非常好。網上有很多評測,綜合來說hikariCp的各項名額最好。目前市面常用的老一些的C3p0、DBCP等,已經過時了。其他比較常用的是阿裡巴巴開源的druid,也還不錯。對于hikariCp。springboot1.x已經嶄露頭角,進入springboot2.x的時代後hikariCp已經成為spring官方欽定的預設資料源了。

2.hikariCp的一些配置項

hikariCp大部配置設定置都提供了預設配置。基于預設配置已經能滿足大部分需要。但是業務需求畢竟是多變的。是以下面一些常用的配置還是需要認真看一看的

dataSourceClassName

這是DataSourceJDBC驅動程式提供的類的名稱。請參閱特定JDBC驅動程式的文檔以擷取此類名。 預設值:無 ,一般我們如果配置了jdbcUrl 這個屬性就不必配置了。

jdbcUrl

這個應該非常熟悉了就是jdbc的資料庫連接配接位址。注意與上面互斥。

username

資料源的使用者名。

password

此資料源的密碼。

autoCommit

此屬性控制從池傳回的連接配接的預設自動送出行為。它是一個布爾值。 預設值:true

connectionTimeout

此屬性控制用戶端(即您)等待池中連接配接的最大毫秒數。如果在沒有連接配接可用的情況下超過此時間,則将抛出SQLException。最低可接受的連接配接逾時為250毫秒。 預設值:30000(30秒)

idleTimeout

此屬性控制允許連接配接在池中空閑的最長時間。 此設定僅适用于聲明的minimumIdle小于maximumPoolSize。一旦連接配接池空閑連接配接數達到最小連接配接數該配置就動态化了,連接配接是否空閑退出的最大變化為+30秒,平均變化為+15秒。在此逾時之前,連接配接永遠不會被空閑。值為0表示永遠不會從池中删除空閑連接配接。允許的最小值為10000毫秒(10秒)。 預設值:600000(10分鐘)

maxLifetime

此屬性控制池中連接配接的最長生命周期。使用中的連接配接永遠不會被回收,隻有當它關閉時才會被删除。在逐個連接配接的基礎上,應用輕微的負衰減以避免池中的大量滅絕。 我們強烈建議設定此值,它應比任何資料庫或基礎結構強加的連接配接時間限制短幾秒。值0表示沒有最大壽命(無限壽命),當然主題是idleTimeout設定。 預設值:1800000(30分鐘)

connectionTestQuery

如果您的驅動程式支援JDBC4,我們強烈建議您不要設定此屬性。這适用于不支援JDBC4的“遺留”驅動程式Connection.isValid() API。這是在從池中給出連接配接之前執行的查詢,以驗證與資料庫的連接配接是否仍然存在。再次嘗試運作沒有此屬性的池,如果您的驅動程式不符合JDBC4,HikariCP将記錄錯誤以通知您。 預設值:無

minimumIdle

此屬性控制HikariCP嘗試在連接配接池中維護的最小空閑連接配接數。如果空閑連接配接低于此值并且池中的總連接配接數小于maximumPoolSize,則HikariCP将盡最大努力快速有效地添加其他連接配接。但是,為了獲得最高性能和對峰值需求的響應,我們建議不要設定此值,而是允許HikariCP充當固定大小的連接配接池。 預設值:與maximumPoolSize相同

maximumPoolSize

此屬性控制允許連接配接池中連接配接數到達的最大值,包括空閑和正在使用的連接配接。基本上,此值将确定資料庫後端的最大實際連接配接數。對此的合理值最好由您的執行環境決定。當池達到此大小且沒有空閑連接配接可用時,對getConnection()的調用将connectionTimeout在逾時前阻塞最多毫秒。請閱讀有關遊泳池尺寸的資訊。 預設值:10

metricRegistry

此屬性僅可通過程式設計配置或IoC容器獲得。此屬性允許您指定池使用的Codahale / Dropwizard 執行個體MetricRegistry來記錄各種度量标準。預設值:無

healthCheckRegistry

此屬性僅可通過程式設計配置或IoC容器獲得。此屬性允許您指定池使用的Codahale / Dropwizard 執行個體HealthCheckRegistry來報告目前的健康資訊。預設值:無

poolName

此屬性表示連接配接池的使用者定義名稱,主要顯示在日志記錄和JMX管理控制台中,以辨別池和池配置。 預設值:自動生成

3.springboot2內建hikariCp

springboot 隻要你內建了`spring-boot-starter-jdbc`就已經引入了hikariCp。 `spring-data-jpa` 和`mybatis-spring-boot-starter` 都內建了`spring-boot-starter-jdbc` 。

java判斷連接配接逾時_springboot2內建性能最強jdbc資料庫資料源連接配接池 1.hikariCp 2.hikariCp的一些配置項3.springboot2內建hikariCp 4.總結

上面是hikariCp達成自動配置的條件。我們解讀一下:

  • 如果類路徑存在HikariDataSource。事實上就是引入hikariCp的依賴。
  • 沒有聲明DataSource Bean 存在
  • 如果你滿足以上2個條件。你在配置檔案中聲明了spring.datasource.type屬性為 com.zaxxer.hikari.HikariDataSource 或者你沒有聲明spring.datasource.type屬性,當然你不能聲明其它的類型 。

這樣hikariCp就自動配置了,隻需要你像其他資料源一樣定制好自己的參數就可以用了。

下面是一個常用的配置:

java判斷連接配接逾時_springboot2內建性能最強jdbc資料庫資料源連接配接池 1.hikariCp 2.hikariCp的一些配置項3.springboot2內建hikariCp 4.總結

4.總結

今天我們學會了springboot2中如何使用性能最好的jdbc資料庫連接配接池hikariCp。對其常用配置進行了講解。以及分析了springboot2是如何自動對其進行內建的。相信對一些不是很清楚該連接配接池的java開發者是一個很好的指南。

java判斷連接配接逾時_springboot2內建性能最強jdbc資料庫資料源連接配接池 1.hikariCp 2.hikariCp的一些配置項3.springboot2內建hikariCp 4.總結

繼續閱讀