主頁 > 前端設計 > HikariCP資料庫連接池中文使用手冊

HikariCP資料庫連接池中文使用手冊

2020-09-19 04:48:53 前端設計

HikariCP 資料庫連接池


迄今為止,性能最好,速度最快的資料庫連接池,

依賴項


Java 8 thru 11 maven artifact:


<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>3.4.5</version>
</dependency>


Java 7 maven artifact (maintenance mode):


<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP-java7</artifactId>
<version>2.4.13</version>
</dependency>


Java 6 maven artifact (maintenance mode):


<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP-java6</artifactId>
<version>2.3.13</version>
</dependency>

HikariCP的jdbc驅動名和資料源類名對應串列


Here is a list of JDBC DataSource classes for popular databases:
Database Driver DataSource class
Apache Derby Derby org.apache.derby.jdbc.ClientDataSource
Firebird Jaybird org.firebirdsql.ds.FBSimpleDataSource
H2 H2 org.h2.jdbcx.JdbcDataSource
HSQLDB HSQLDB org.hsqldb.jdbc.JDBCDataSource
IBM DB2 IBM JCC com.ibm.db2.jcc.DB2SimpleDataSource
IBM Informix IBM Informix com.informix.jdbcx.IfxDataSource
MS SQL Server Microsoft com.microsoft.sqlserver.jdbc.SQLServerDataSource
MySQL Connector/J com.mysql.jdbc.jdbc2.optional.MysqlDataSource
MariaDB MariaDB org.mariadb.jdbc.MariaDbDataSource
Oracle Oracle oracle.jdbc.pool.OracleDataSource
OrientDB OrientDB com.orientechnologies.orient.jdbc.OrientDataSource
PostgreSQL pgjdbc-ng com.impossibl.postgres.jdbc.PGDataSource
PostgreSQL PostgreSQL org.postgresql.ds.PGSimpleDataSource
SAP MaxDB SAP com.sap.dbtech.jdbc.DriverSapDB
SQLite xerial org.sqlite.SQLiteDataSource
SyBase jConnect com.sybase.jdbc4.jdbc.SybDataSource

補充(實際上postgreSQL官方jdbc驅動使用下面這個類名):
PostgreSQL PostgreSQL org.postgresql.Driver

HikariCP配置屬性全覽


HikariCP帶有合理的默認值,在大多數部署中都可以正常運行,而無需進行其他調整,每個屬性都是可選的,但以下標記的“必需”除外,

📎HikariCP使用毫秒作為所有時間值,
HikariCP依靠準確的計時器來提高性能和可靠性,您的服務器必須與時間源(例如NTP服務器)同步,特別是如果您的服務器在虛擬機中運行,為什么?在這里閱讀更多,不要依靠虛擬機監控程式設定來“同步”虛擬機的時鐘,在虛擬機內部配置時間源同步,如果您是由于時間缺乏同步而尋求支持,則會在Twitter上公開嘲諷您,

這個是真的,如果因為時間漂移問題導致無法獲取連接這個問題去問作者會被噴,

Essentials(必需的配置)
🔠dataSourceClassName
這是JDBC驅動程式提供的DataSource類的名稱,有關特定的JDBC驅動程式的資訊,請查閱檔案以獲取該類名,或參閱下表,注意不支持XA資料源, XA需要像bitronix這樣的真實事務管理器,請注意,如果您使用jdbcUrl進行基于“老式”基于DriverManager的JDBC驅動程式配置,則不需要此屬性,默認值:無

- 或 -

🔠jdbcUrl
此屬性指示HikariCP使用“基于DriverManager的”配置,我們認為基于資料源的配置(上文)優于多種原因(請參見下文),但是對于許多部署而言,差異不大,當將此屬性與“舊”驅動程式一起使用時,您可能還需要設定driverClassName屬性,但首先嘗試不使用該屬性,請注意,如果使用此屬性,則仍可以使用DataSource屬性來配置驅動程式,實際上,建議您對URL本身中指定的驅動程式引數進行推薦,默認值:無

實際上,大部分實際應用中,HikariCP都不能通過jdbcUrl決議出正確的driverClassName,所以我認為driverClassName是必須的,所以我把driverClassName從不常用配置提升到必須配置,

🔠driverClassName
HikariCP將嘗試僅通過jdbcUrl通過DriverManager來決議驅動程式,但是對于某些較舊的驅動程式,還必須指定driverClassName,除非獲得明顯的錯誤訊息指示未找到驅動程式,否則請忽略此屬性,默認值:無

🔠username(用戶名)
此屬性設定從基礎驅動程式獲取連接時使用的默認身份驗證用戶名,請注意,對于DataSources,這可以通過在基礎DataSource上呼叫DataSource.getConnection(* username *,password)以非常確定的方式進行,但是,對于基于驅動程式的配置,每個驅動程式都是不同的,對于基于驅動程式的情況,HikariCP將使用此用戶名屬性在傳遞給驅動程式的DriverManager.getConnection(jdbcUrl,props)呼叫的屬性中設定用戶屬性,如果這不是您所需要的,請完全跳過此方法,并例如呼叫addDataSourceProperty(“ username”,...),默認值:無

🔠password(密碼)
此屬性設定從基礎驅動程式獲取連接時使用的默認身份驗證密碼,請注意,對于DataSources,這可以通過在基礎DataSource上呼叫DataSource.getConnection(username,* password *)以非常確定的方式進行,但是,對于基于驅動程式的配置,每個驅動程式都是不同的,對于基于驅動程式的情況,HikariCP將使用此密碼屬性在傳遞給驅動程式的DriverManager.getConnection(jdbcUrl,props)呼叫的屬性中設定密碼屬性,如果這不是您所需要的,請完全跳過此方法,例如,呼叫addDataSourceProperty(“ pass”,...),默認值:無

Frequently used(以下是經常使用的配置屬性)

autoCommit
此屬性控制從池回傳的連接的默認自動提交行為,它是一個布林值,默認值:true

?connectionTimeout
此屬性控制客戶端(即您)等待來自池的連接的最大毫秒數,如果超過此時間而沒有可用的連接,則會拋出SQLException,可接受的最低連接超時為250 ms,默認值:30000(30秒)

?idleTimeout
此屬性控制允許連接在池中保持空閑狀態的最長時間,僅當minimumIdle定義為小于maximumPoolSize時,此設定才適用,一旦池達到MinimumIdle連接,空閑連接將不被取消,連接是否以空閑狀態退役,最大變化為+30秒,平均變化為+15秒,在此超時之前,連接永遠不會因為空閑而退役,值為0表示永遠不會從池中洗掉空閑連接,最小允許值為10000ms(10秒),默認值:600000(10分鐘)

?maxLifetime(最大生存時間)
此屬性控制池中連接的最大生存期,使用中的連接永遠不會退出,只有在關閉連接后才將其洗掉,在逐個連接的基礎上,應用較小的負衰減以避免池中的質量消滅,我們強烈建議設定此值,它應該比任何資料庫或基礎結構施加的連接時間限制短幾秒鐘,值0表示沒有最大生存期(無限生存期),當然要遵守idleTimeout設定,最小允許值為30000ms(30秒),默認值: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的實體,池將使用該實體來記錄各種指標,有關詳細資訊,請參見Metrics Wiki頁面,默認值:無

📈healthCheckRegistry
此屬性僅可通過編程配置或IoC容器使用,此屬性允許您指定Codahale / Dropwizard HealthCheckRegistry的實體,池將使用該實體來報告當前的健康資訊,有關詳細資訊,請參見運行狀況檢查Wiki頁面,默認值:無

🔠poolName
該屬性表示連接池的用戶定義名稱,主要出現在日志記錄和JMX管理控制臺中,以識別池和池配置,默認值:自動生成

Infrequently used(以下是很少的使用配置屬性)
?initializationFailTimeout
此屬性控制如果無法為初始連接成功播種池,則池是否將“快速失敗”,任何正數都將視為嘗試獲取初始連接的毫秒數;在此期間,應用程式執行緒將被阻止,如果在此超時發生之前無法獲取連接,則將引發例外,此超時在connectionTimeout時間段之后應用,如果值為零(0),則HikariCP將嘗試獲取并驗證連接,如果獲得連接但驗證失敗,則將引發例外并且池不啟動,但是,如果無法獲得連接,則池將啟動,但是以后獲得連接的努力可能會失敗,小于零的值將繞過任何初始連接嘗試,并且池將在嘗試在后臺獲取連接時立即啟動,因此,以后獲得連接的努力可能會失敗,默認值:1

?isolateInternalQueries
此屬性確定HikariCP是否在其自身的事務中隔離內部池查詢,例如連接活動測驗,由于這些通常是只讀查詢,因此幾乎沒有必要將它們封裝在自己的事務中,僅當禁用autoCommit時,此屬性才適用,默認值:false

?allowPoolSuspension
此屬性控制是否可以通過JMX暫停和恢復池,這對于某些故障轉移自動化方案很有用,當池掛起時,對getConnection()的呼叫不會超時,并且將保持到恢復池為止,默認值:false

?readOnly
此屬性控制默認情況下從池獲得的連接是否處于只讀模式,請注意,某些資料庫不支持只讀模式的概念,而另一些資料庫在將Connection設定為只讀時提供查詢優化,是否需要此屬性在很大程度上取決于您的應用程式和資料庫,默認值:false

?registerMbeans
此屬性控制是否注冊JMX管理Bean(“ MBean”),默認值:false

🔠catalog
此屬性為支持目錄概念的資料庫設定默認目錄,如果未指定此屬性,則使用JDBC驅動程式定義的默認目錄,默認值:驅動程式默認值

🔠connectionInitSql
此屬性設定一個SQL陳述句,該陳述句將在每次創建新連接后執行,然后再將其添加到池中,如果此SQL無效或引發例外,它將被視為連接失敗,并且將遵循標準的重試邏輯,默認值:無

transactionIsolation
此屬性控制從池回傳的連接的默認事務隔離級別,如果未指定此屬性,則使用JDBC驅動程式定義的默認事務隔離級別,僅當您具有所有查詢通用的特定隔離要求時,才使用此屬性,此屬性的值是Connection類中的常量名稱,例如TRANSACTION_READ_COMMITTED,TRANSACTION_REPEATABLE_READ等,默認值:驅動程式默認值

?validationTimeout
此屬性控制將測驗連接的活動性的最長時間,此值必須小于connectionTimeout,可接受的最低驗證超時為250毫秒,默認值:5000

?leakDetectionThreshold
此屬性控制在記錄表示可能的連接泄漏的訊息之前,連接可以離開池的時間,值為0表示禁用泄漏檢測,啟用泄漏檢測的最低可接受值為2000(2秒),默認值:0

?dataSource
此屬性僅可通過編程配置或IoC容器使用,此屬性使您可以直接設定要由池包裝的DataSource實體,而不是讓HikariCP通過反射構造它,這在某些依賴項注入框架中可能很有用,指定此屬性后,將忽略dataSourceClassName屬性和所有特定于DataSource的屬性,默認值:無

🔠schema
此屬性為支持模式概念的資料庫設定默認模式,如果未指定此屬性,則使用JDBC驅動程式定義的默認模式,默認值:驅動程式默認值

?threadFactory
此屬性僅可通過編程配置或IoC容器使用,此屬性允許您設定java.util.concurrent.ThreadFactory的實體,該實體將用于創建池使用的所有執行緒,在某些只能通過應用程式容器提供的ThreadFactory創建執行緒的受限執行環境中,需要使用它,默認值:無

?scheduledExecutor
此屬性僅可通過編程配置或IoC容器使用,該屬性允許您設定java.util.concurrent.ScheduledExecutorService的實體,該實體將用于各種內部計劃的任務,如果向HikariCP提供ScheduledThreadPoolExecutor實體,則建議使用setRemoveOnCancelPolicy(true),默認值:無

在spring配置中如何初始化HikariCP的datasource

使用com.zaxxer.hikari.HikariDataSource類作為連接池初始化類

<!--連接池配置-->
<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close">
<property name="poolName" value="${hikari.poolName}" />
<property name="autoCommit" value="${hikari.autoCommit}" />

<property name="driverClassName" value="${hikari.driverClassName}"></property>
<property name="jdbcUrl" value="${hikari.jdbcUrl}" />
<property name="username" value="${hikari.username}" />
<property name="password" value="${hikari.password}" />

<property name="maximumPoolSize" value="${hikari.maximumPoolSize}" />
<property name="minimumIdle" value="${hikari.minimumIdle}" />
<property name="connectionTimeout" value="${hikari.connectionTimeout}" />
<property name="idleTimeout" value="${hikari.idleTimeout}" />
<property name="maxLifetime" value="${hikari.maxLifetime}" />
<property name="connectionTestQuery" value="${hikari.connectionTestQuery}" />
</bean>

在springboot中如何初始化HikariCP

在application.properties組態檔中配置

spring.datasource.type=com.zaxxer.hikari.HikariDataSource

其他引數與springboot正常連接配置相同,對應引數值參考上面的spring連接池配置引數

轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/78845.html

標籤:其他

上一篇:MySQL資料庫單表查詢——條件查詢

下一篇:MySQL回圈插入資料

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • vue移動端上拉加載

    可能做得過于簡單或者比較low,請各位大佬留情,一起探討技術 ......

    uj5u.com 2020-09-10 04:38:07 more
  • 優美網站首頁,頂部多層導航

    一個個人用的瀏覽器首頁,可以把一下常用的網站放在這里,平常打開會比較方便。 第一步,HTML代碼 <script src=https://www.cnblogs.com/szharf/p/"js/jquery-3.4.1.min.js"></script> <div id="navigate"> <ul> <li class="labels labels_1"> ......

    uj5u.com 2020-09-10 04:38:47 more
  • 頁面為要加<!DOCTYPE html>

    最近因為寫一個js函式,需要用到$(window).height(); 由于手寫demo的時候,過于自信,其實對前端方面的認識也不夠體系,用文本檔案直接敲出來的html代碼,第一行沒有加上<!DOCTYPE html> 導致了$(window).height();的結果直接是整個document的高 ......

    uj5u.com 2020-09-10 04:38:52 more
  • WordPress網站程式手動升級要做好資料備份

    WordPress博客網站程式在進行升級前,必須要做好網站資料的備份,這個問題良家佐言是遇見過的;在剛開始接觸WordPress博客程式的時候,因為升級問題和博客網站的修改的一些嘗試,良家佐言是吃盡了苦頭。因為購買的是西部數碼的空間和域名,每當佐言把自己的WordPress博客網站搞到一塌糊涂的時候 ......

    uj5u.com 2020-09-10 04:39:30 more
  • WordPress程式不能升級為5.4.2版本的原因

    WordPress是一款個人博客系統,受到英文博客愛好者和中文博客愛好者的追捧,并逐步演化成一款內容管理系統軟體;它是使用PHP語言和MySQL資料庫開發的,用戶可以在支持PHP和MySQL資料庫的服務器上使用自己的博客。每一次WordPress程式的更新,就會牽動無數WordPress愛好者的心, ......

    uj5u.com 2020-09-10 04:39:49 more
  • 使用CSS3的偽元素進行首字母下沉和首行改變樣式

    網頁中常見的一種效果,首字改變樣式或者首行改變樣式,效果如下圖。 代碼: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, ......

    uj5u.com 2020-09-10 04:40:09 more
  • 關于a標簽的講解

    什么是a標簽? <a> 標簽定義超鏈接,用于從一個頁面鏈接到另一個頁面。 <a> 元素最重要的屬性是 href 屬性,它指定鏈接的目標。 a標簽的語法格式:<a href=https://www.cnblogs.com/summerxbc/p/"指定要跳轉的目標界面的鏈接">需要展示給用戶看見的內容</a> a標簽 在所有瀏覽器中,鏈接的默認外觀如下: 未被訪問的鏈接帶 ......

    uj5u.com 2020-09-10 04:40:11 more
  • 前端輪播圖

    在需要輪播的頁面是引入swiper.min.js和swiper.min.css swiper.min.js地址: 鏈接:https://pan.baidu.com/s/15Uh516YHa4CV3X-RyjEIWw 提取碼:4aks swiper.min.css地址 鏈接:https://pan.b ......

    uj5u.com 2020-09-10 04:40:13 more
  • 如何設定html中的背景圖片(全屏顯示,且不拉伸)

    1 <style>2 body{background-image:url(https://uploadbeta.com/api/pictures/random/?key=BingEverydayWallpaperPicture); 3 background-size:cover;background ......

    uj5u.com 2020-09-10 04:40:16 more
  • Java學習——HTML詳解(上)

    HTML詳解 初識HTML Hyper Text Markup Language(超文本標記語言) 1 <!--DOCTYPE:告訴瀏覽器我們要使用什么規范--> 2 <!DOCTYPE html> 3 <html lang="en"> 4 <head> 5 <!--meta 描述性的標簽,描述一些 ......

    uj5u.com 2020-09-10 04:40:33 more
最新发布
  • 我的第一個NPM包:panghu-planebattle-esm(胖虎飛機大戰)使用說明

    好家伙,我的包終于開發完啦 歡迎使用胖虎的飛機大戰包!! 為你的主頁添加色彩 這是一個有趣的網頁小游戲包,使用canvas和js開發 使用ES6模塊化開發 效果圖如下: (覺得圖片太sb的可以自己改) 代碼已開源!! Git: https://gitee.com/tang-and-han-dynas ......

    uj5u.com 2023-04-20 07:59:23 more
  • 生產事故-走近科學之消失的JWT

    入職多年,面對生產環境,盡管都是小心翼翼,慎之又慎,還是難免捅出簍子。輕則滿頭大汗,面紅耳赤。重則系統停擺,損失資金。每一個生產事故的背后,都是寶貴的經驗和教訓,都是專案成員的血淚史。為了更好地防范和遏制今后的各類事故,特開此專題,長期更新和記錄大大小小的各類事故。有些是親身經歷,有些是經人耳傳口授 ......

    uj5u.com 2023-04-18 07:55:04 more
  • 記錄--Canvas實作打飛字游戲

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 打開游戲界面,看到一個畫面簡潔、卻又富有挑戰性的游戲。螢屏上,有一個白色的矩形框,里面不斷下落著各種單詞,而我需要迅速地輸入這些單詞。如果我輸入的單詞與螢屏上的單詞匹配,那么我就可以獲得得分;如果我輸入的單詞錯誤或者時間過長,那么我就會輸 ......

    uj5u.com 2023-04-04 08:35:30 more
  • 了解 HTTP 看這一篇就夠

    在學習網路之前,了解它的歷史能夠幫助我們明白為何它會發展為如今這個樣子,引發探究網路的興趣。下面的這張圖片就展示了“互聯網”誕生至今的發展歷程。 ......

    uj5u.com 2023-03-16 11:00:15 more
  • 藍牙-低功耗中心設備

    //11.開啟藍牙配接器 openBluetoothAdapter //21.開始搜索藍牙設備 startBluetoothDevicesDiscovery //31.開啟監聽搜索藍牙設備 onBluetoothDeviceFound //30.停止監聽搜索藍牙設備 offBluetoothDevi ......

    uj5u.com 2023-03-15 09:06:45 more
  • canvas畫板(滑鼠和觸摸)

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>canves</title> <style> #canvas { cursor:url(../images/pen.png),crosshair; } #canvasdiv{ bo ......

    uj5u.com 2023-02-15 08:56:31 more
  • 手機端H5 實作自定義拍照界面

    手機端 H5 實作自定義拍照界面也可以使用 MediaDevices API 和 <video> 標簽來實作,和在桌面端做法基本一致。 首先,使用 MediaDevices.getUserMedia() 方法獲取攝像頭媒體流,并將其傳遞給 <video> 標簽進行渲染。 接著,使用 HTML 的 < ......

    uj5u.com 2023-01-12 07:58:22 more
  • 記錄--短視頻滑動播放在 H5 下的實作

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 短視頻已經無數不在了,但是主體還是使用 app 來承載的。本文講述 H5 如何實作 app 的視頻滑動體驗。 無聲勝有聲,一圖頂百辯,且看下圖: 網址鏈接(需在微信或者手Q中瀏覽) 從上圖可以看到,我們主要實作的功能也是本文要講解的有: ......

    uj5u.com 2023-01-04 07:29:05 more
  • 一文讀懂 HTTP/1 HTTP/2 HTTP/3

    從 1989 年萬維網(www)誕生,HTTP(HyperText Transfer Protocol)經歷了眾多版本迭代,WebSocket 也在期間萌芽。1991 年 HTTP0.9 被發明。1996 年出現了 HTTP1.0。2015 年 HTTP2 正式發布。2020 年 HTTP3 或能正... ......

    uj5u.com 2022-12-24 06:56:02 more
  • 【HTML基礎篇002】HTML之form表單超詳解

    ??一、form表單是什么

    ??二、form表單的屬性

    ??三、input中的各種Type屬性值

    ??四、標簽 ......

    uj5u.com 2022-12-18 07:17:06 more