1. 程式人生 > >hikariCP連線池各屬性詳解

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)使用它。 預設值:無

四、友鏈