天天看點

hikariCP連接配接池各屬性詳解轉載自

一、主要配置

1、dataSourceClassName

這是DataSourceJDBC驅動程式提供的類的名稱。請查閱您的特定JDBC驅動程式的文檔以擷取此類名稱,或參閱下表。注XA資料源不受支援。XA需要像bitronix這樣的真正的事務管理器 。請注意,如果您正在使用jdbcUrl“舊式”基于DriverManager的JDBC驅動程式配置,則不需要此屬性 。 預設值:無

2、jdbcUrl

該屬性訓示HikariCP使用“基于DriverManager的”配置。我們認為基于DataSource的配置(上圖)由于各種原因(參見下文)是優越的,但對于許多部署來說,幾乎沒有顯着差異。 在“舊”驅動程式中使用此屬性時,您可能還需要設定該 driverClassName屬性,但不要先嘗試。 請注意,如果使用此屬性,您仍然可以使用DataSource屬性來配置您的驅動程式,實際上建議您使用URL本身中指定的驅動程式參數。 預設值:無

3、username

此屬性設定從基礎驅動程式擷取連接配接時使用的預設身份驗證使用者名。請注意,對于DataSources,這通過調用DataSource.getConnection(username, password)基礎DataSource 以非常确定的方式工作。但是,對于基于驅動程式的配置,每個驅動程式都不同。在基于驅動程式的情況下,HikariCP将使用此username屬性來設定傳遞給驅動程式調用的user屬性。如果這不是你所需要的,例如完全跳過這個方法并且調用。 預設值:無PropertiesDriverManager.getConnection(jdbcUrl, props)addDataSourceProperty(“username”, …)

4、password

此屬性設定從基礎驅動程式擷取連接配接時使用的預設身份驗證密碼。請注意,對于DataSources,這通過調用DataSource.getConnection(username, password)基礎DataSource 以非常确定的方式工作。但是,對于基于驅動程式的配置,每個驅動程式都不同。在基于驅動程式的情況下,HikariCP将使用此password屬性來設定傳遞給驅動程式調用的password屬性。如果這不是你所需要的,例如完全跳過這個方法并且調用。 預設值:無PropertiesDriverManager.getConnection(jdbcUrl, props)addDataSourceProperty(“pass”, …)

二、常用配置

5、autoCommit

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

6、 connectionTimeout

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

7、 idleTimeout

此屬性控制允許連接配接在池中閑置的最長時間。 此設定僅适用于minimumIdle定義為小于maximumPoolSize。一旦池達到連接配接,空閑連接配接将不會退出minimumIdle。連接配接是否因閑置而退出,最大變化量為+30秒,平均變化量為+15秒。在逾時之前,連接配接永遠不會退出。值為0意味着空閑連接配接永遠不會從池中删除。允許的最小值是10000ms(10秒)。 預設值:600000(10分鐘)

8、 maxLifetime

此屬性控制池中連接配接的最大生存期。正在使用的連接配接永遠不會退休,隻有在關閉後才會被删除。在逐個連接配接的基礎上,應用較小的負面衰減來避免池中的大量消失。 我們強烈建議設定此值,并且應該比任何資料庫或基礎設施規定的連接配接時間限制短幾秒。 值為0表示沒有最大壽命(無限壽命),當然是idleTimeout設定的主題。 預設值:1800000(30分鐘)

9、connectionTestQuery

如果您的驅動程式支援JDBC4,我們強烈建議您不要設定此屬性。這是針對不支援JDBC4的“傳統”驅動程式Connection.isValid() API。這是在連接配接從池中獲得連接配接以确認與資料庫的連接配接仍然存在之前将要執行的查詢。再一次,嘗試運作沒有此屬性的池,如果您的驅動程式不符合JDBC4的要求,HikariCP将記錄一個錯誤以告知您。 預設值:無

10、minimumIdle

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

11、maximumPoolSize

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

12、metricRegistry

該屬性僅通過程式設計配置或IoC容器可用。該屬性允許您指定池使用的Codahale / Dropwizard 執行個體MetricRegistry來記錄各種名額。有關 詳細資訊,請參閱Metrics維基頁面。 預設值:無

13、healthCheckRegistry

該屬性僅通過程式設計配置或IoC容器可用。該屬性允許您指定池使用的Codahale / Dropwizard 的執行個體HealthCheckRegistry來報告目前的健康資訊。有關 詳細資訊,請參閱健康檢查 wiki頁面。 預設值:無

14、poolName

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

三、不常用配置

15、 initializationFailTimeout

如果池無法成功初始化連接配接,則此屬性控制池是否将“快速失敗”。任何正數都取為嘗試擷取初始連接配接的毫秒數; 應用程式線程将在此期間被阻止。如果在逾時發生之前無法擷取連接配接,則會引發異常。此逾時被應用後的connectionTimeout 期。如果值為零(0),HikariCP将嘗試擷取并驗證連接配接。如果獲得連接配接但未通過驗證,将抛出異常并且池未啟動。但是,如果無法獲得連接配接,則會啟動該池,但後續擷取連接配接的操作可能會失敗。小于零的值将繞過任何初始連接配接嘗試,并且在嘗試擷取背景連接配接時,池将立即啟動。是以,以後努力獲得連接配接可能會失敗。 預設值:1

16、isolateInternalQueries

此屬性确定HikariCP是否在其自己的事務中隔離内部池查詢,例如連接配接活動測試。由于這些通常是隻讀查詢,是以很少有必要将它們封裝在自己的事務中。該屬性僅适用于autoCommit禁用的情況。 預設值:false

17、allowPoolSuspension

該屬性控制池是否可以通過JMX暫停和恢複。這對于某些故障轉移自動化方案很有用。當池被暫停時,呼叫 getConnection()将不會逾時,并将一直保持到池恢複為止。 預設值:false

18、readOnly

此屬性控制預設情況下從池中擷取的連接配接是否處于隻讀模式。注意某些資料庫不支援隻讀模式的概念,而其他資料庫則在Connection設定為隻讀時提供查詢優化。無論您是否需要此屬性,都将主要取決于您的應用程式和資料庫。 預設值:false

19、registerMbeans

該屬性控制是否注冊JMX管理Bean(“MBeans”)。 預設值:false

20、catalog

該屬性設定預設目錄為支援目錄的概念資料庫。如果未指定此屬性,則使用由JDBC驅動程式定義的預設目錄。 預設:驅動程式預設

21、connectionInitSql

該屬性設定一個SQL語句,在将每個新連接配接建立後,将其添加到池中之前執行該語句。如果這個SQL無效或引發異常,它将被視為連接配接失敗并且将遵循标準重試邏輯。 預設值:無

22、driverClassName

HikariCP将嘗試通過DriverManager僅基于驅動程式來解析驅動程式jdbcUrl,但對于一些較舊的驅動程式,driverClassName還必須指定它。除非您收到明顯的錯誤消息,指出找不到驅動程式,否則請忽略此屬性。 預設值:無

23、transactionIsolation

此屬性控制從池傳回的連接配接的預設事務隔離級别。如果未指定此屬性,則使用由JDBC驅動程式定義的預設事務隔離級别。如果您有針對所有查詢通用的特定隔離要求,請僅使用此屬性。此屬性的值是從不斷的名稱Connection 類,如TRANSACTION_READ_COMMITTED,TRANSACTION_REPEATABLE_READ等 預設值:驅動程式預設

24、 validationTimeout

此屬性控制連接配接測試活動的最長時間。這個值必須小于connectionTimeout。最低可接受的驗證逾時時間為250 ms。 預設值:5000

25、 leakDetectionThreshold

此屬性控制在記錄消息之前連接配接可能離開池的時間量,表明可能存在連接配接洩漏。值為0意味着洩漏檢測被禁用。啟用洩漏檢測的最低可接受值為2000(2秒)。 預設值:0

26、 dataSource

此屬性僅通過程式設計配置或IoC容器可用。這個屬性允許你直接設定DataSource池的執行個體,而不是讓HikariCP通過反射來構造它。這在一些依賴注入架構中可能很有用。當指定此屬性時,dataSourceClassName屬性和所有DataSource特定的屬性将被忽略。 預設值:無

27、schema

該屬性設定的預設模式為支援模式的概念資料庫。如果未指定此屬性,則使用由JDBC驅動程式定義的預設模式。 預設:驅動程式預設

28、 threadFactory

此屬性僅通過程式設計配置或IoC容器可用。該屬性允許您設定java.util.concurrent.ThreadFactory将用于建立池使用的所有線程的執行個體。在一些隻能通過ThreadFactory應用程式容器提供的線程建立線程的有限執行環境中需要它。 預設值:無

29、 scheduledExecutor

此屬性僅通過程式設計配置或IoC容器可用。該屬性允許您設定java.util.concurrent.ScheduledExecutorService将用于各種内部計劃任務的執行個體。如果為ScheduledThreadPoolExecutor 執行個體提供HikariCP,建議setRemoveOnCancelPolicy(true)使用它。 預設值:無

轉載自

https://blog.csdn.net/Maskkiss/article/details/82115149