日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

hikari如何切换数据源_hikari数据库连接池

發布時間:2024/9/15 数据库 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hikari如何切换数据源_hikari数据库连接池 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

中文 Chinese英文 English

0x01 使用方法

配置依賴:

com.zaxxer

HikariCP

2.6.2

項目沒用使用spring等一系列高大上的輪子,在接入連接池的時候無法去配置datasource,所以使用的是比較簡單粗暴的方式,手動創建HikariConfig,使用該對象去創建datasource。

private HikariDataSource initDataSource(String url, int jdbcPoolSize) {

HikariConfig config = new HikariConfig();

config.setDriverClassName("com.mysql.cj.jdbc.Driver");

config.setJdbcUrl(url);

config.setAutoCommit(false);

config.setConnectionTestQuery("SELECT 1;");

config.setMaximumPoolSize(jdbcPoolSize);

config.addDataSourceProperty("cachePrepStmts", "true");

config.addDataSourceProperty("prepStmtCacheSize", "250");

config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");

config.setMaxLifetime(MAX_LIFE_TIME);

config.setIdleTimeout(IDLE_TIMEOUT);

return new HikariDataSource(config);

}

接下來就可以使用datasource來得到connection。連接池內的連接用完要釋放掉,推薦try-with-resources。

0x02 hikari注意點需要服務器同NTP服務器保持同步(https://dba.stackexchange.com/questions/171002/choice-of-connection-pooling-library-for-vm-deploys/171020)。

hikari不支持連接池層的preparestatement緩存,推薦使用jdbc驅動的preparestatement緩存。

hikari也不支持Log Statement Text/Slow Query Logging,因為大多數的驅動都支持了。

0x03 hikari參數詳解allowPoolSuspension:連接池是否可以被jmx掛起,如果連接池被掛起,getConnection就不會超時,默認值false。

autoCommit:connection是否自動提交,默認值true。

catalog:配置連接的數據庫。

connectionInitSql:創建連接前默認執行的sql語句,如果語句執行失敗連接則失敗,然后重試連接,默認值無。

connectionTestQuery:jdbc4以下版本的驅動可以設置這個參數,用來支持jdbc4新提供的api,Connection.isValid(),默認值無。

connectionTimeout:從池中獲取連接的最大等待時間,超時拋異常,默認值30s。

dataSource:對一些Ioc框架有用,如果設置其他的datasource參數將被忽略,默認值無。

dataSourceClassName:設置datasource jdbc驅動提供的類名,如果基于jdbc url的jdbc驅動則不須要設置,默認值無。

dataSourceJNDI:默認值無。

dataSourceProperties:datasource的properties。

driverClassName:基于jdbc url的jdbc驅動類。

healthCheckRegistry:Ioc框架在用,檢測當前數據連接池的健康狀態。

idleTimeout:連接在池中閑置超過這個時間,則刪除。0表示空閑連接不刪除,默認值10分鐘。

initializationFailFast:是否開啟failfast,默認值true。

initializationFailTimeout:連接池初始連接的timeout值,單位毫秒。如果在timeout的期間內無法初始化成功連接池,則拋出異常。如果設置為0,會嘗試重連,重連失敗則拋異常終止連接池,小于0表示不重連,默認值1。

isolateInternalQueries:是否將連接池的查詢封裝在自己的事務中,這個屬性在autoCommit=false時生效,默認false。

jdbc4ConnectionTest:jdbc4驅動的test sql。

jdbcUrl:jdbc url。

leakDetectionThreshold:內存泄漏偵測入口,默認值0。

maxLifetime:連接最大存活時間。

maximumPoolSize:最大的緩沖池大小。

metricRegistry:Ioc框架在用,統計當前數據連接池的狀態。

minimumIdle:最小空閑的連接數。

password:密碼。

poolName:連接池名,給JMX用,默認值自動生成。

readOnly:連接是否只讀,默認值false。

registerMbeans:是否注冊管理構建工具,默認值false。

transactionIsolation:事務的隔離級別,默認驅動默認值。

username:用戶名。

validationTimeout:連接活動的超時時間,必須比connectionTimeout小,默認250ms。

0x04 DataSource和DriverManager的對比

jdbc2.0開始使用了DataSource接口來創建連接。對比直接DriverManager的方式創建連接,DataSource會更優雅一些。可以自己實現DataSource封裝創建連接的過程,也可以將DriverManager封裝成DataSource創建連接。而DriverManager需要顯示的將驅動類名硬編碼在代碼中。DataSource的方案會更面向連接池

0x05 hikari推薦配置

jdbcUrl=jdbc:mysql://localhost:3306/simpsons

user=test

password=test

dataSource.cachePrepStmts=true

dataSource.prepStmtCacheSize=250

dataSource.prepStmtCacheSqlLimit=2048

dataSource.useServerPrepStmts=true

dataSource.useLocalSessionState=true

dataSource.useLocalTransactionState=true

dataSource.rewriteBatchedStatements=true

dataSource.cacheResultSetMetadata=true

dataSource.cacheServerConfiguration=true

dataSource.elideSetAutoCommits=true

dataSource.maintainTimeStats=false

總結

以上是生活随笔為你收集整理的hikari如何切换数据源_hikari数据库连接池的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。