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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

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

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

中文 Chinese英文 English

0x01 使用方法

配置依賴:

com.zaxxer

HikariCP

2.6.2

項(xiàng)目沒用使用spring等一系列高大上的輪子,在接入連接池的時(shí)候無法去配置datasource,所以使用的是比較簡單粗暴的方式,手動創(chuàng)建HikariConfig,使用該對象去創(chuàng)建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。連接池內(nèi)的連接用完要釋放掉,推薦try-with-resources。

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

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

hikari也不支持Log Statement Text/Slow Query Logging,因?yàn)榇蠖鄶?shù)的驅(qū)動都支持了。

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

autoCommit:connection是否自動提交,默認(rèn)值true。

catalog:配置連接的數(shù)據(jù)庫。

connectionInitSql:創(chuàng)建連接前默認(rèn)執(zhí)行的sql語句,如果語句執(zhí)行失敗連接則失敗,然后重試連接,默認(rèn)值無。

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

connectionTimeout:從池中獲取連接的最大等待時(shí)間,超時(shí)拋異常,默認(rèn)值30s。

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

dataSourceClassName:設(shè)置datasource jdbc驅(qū)動提供的類名,如果基于jdbc url的jdbc驅(qū)動則不須要設(shè)置,默認(rèn)值無。

dataSourceJNDI:默認(rèn)值無。

dataSourceProperties:datasource的properties。

driverClassName:基于jdbc url的jdbc驅(qū)動類。

healthCheckRegistry:Ioc框架在用,檢測當(dāng)前數(shù)據(jù)連接池的健康狀態(tài)。

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

initializationFailFast:是否開啟failfast,默認(rèn)值true。

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

isolateInternalQueries:是否將連接池的查詢封裝在自己的事務(wù)中,這個屬性在autoCommit=false時(shí)生效,默認(rèn)false。

jdbc4ConnectionTest:jdbc4驅(qū)動的test sql。

jdbcUrl:jdbc url。

leakDetectionThreshold:內(nèi)存泄漏偵測入口,默認(rèn)值0。

maxLifetime:連接最大存活時(shí)間。

maximumPoolSize:最大的緩沖池大小。

metricRegistry:Ioc框架在用,統(tǒng)計(jì)當(dāng)前數(shù)據(jù)連接池的狀態(tài)。

minimumIdle:最小空閑的連接數(shù)。

password:密碼。

poolName:連接池名,給JMX用,默認(rèn)值自動生成。

readOnly:連接是否只讀,默認(rèn)值false。

registerMbeans:是否注冊管理構(gòu)建工具,默認(rèn)值false。

transactionIsolation:事務(wù)的隔離級別,默認(rèn)驅(qū)動默認(rèn)值。

username:用戶名。

validationTimeout:連接活動的超時(shí)時(shí)間,必須比connectionTimeout小,默認(rèn)250ms。

0x04 DataSource和DriverManager的對比

jdbc2.0開始使用了DataSource接口來創(chuàng)建連接。對比直接DriverManager的方式創(chuàng)建連接,DataSource會更優(yōu)雅一些??梢宰约簩?shí)現(xiàn)DataSource封裝創(chuàng)建連接的過程,也可以將DriverManager封裝成DataSource創(chuàng)建連接。而DriverManager需要顯示的將驅(qū)動類名硬編碼在代碼中。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

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。