hikariCP鏈接池配置

主要配置java

一、dataSourceClassName
這是DataSourceJDBC驅動程序提供的類的名稱。請查閱您的特定JDBC驅動程序的文檔以獲取此類名稱,或參閱下。注XA數據源不受支持。XA須要像bitronix這樣的真正的事務管理器 。請注意,若是您正在使用jdbcUrl「舊式」基於DriverManager的JDBC驅動程序配置,則不須要此屬性 。 默認值:無git

二、jdbcUrl
該屬性指示HikariCP使用「基於DriverManager的」配置。咱們認爲基於DataSource的配置(上圖)因爲各類緣由(參見下文)是優越的,但對於許多部署來講,幾乎沒有顯着差別。 在「舊」驅動程序中使用此屬性時,您可能還須要設置該 driverClassName屬性,但不要先嚐試。 請注意,若是使用此屬性,您仍然可使用DataSource屬性來配置您的驅動程序,實際上建議您使用URL自己中指定的驅動程序參數。 默認值:無github

三、username
此屬性設置從基礎驅動程序獲取鏈接時使用的默認身份驗證用戶名。請注意,對於DataSources,這經過調用DataSource.getConnection(*username*, password)基礎DataSource 以很是肯定的方式工做。可是,對於基於驅動程序的配置,每一個驅動程序都不一樣。在基於驅動程序的狀況下,HikariCP將使用此username屬性來設置傳遞給驅動程序調用的user屬性。若是這不是你所須要的,例如徹底跳過這個方法而且調用。 默認值:無PropertiesDriverManager.getConnection(jdbcUrl, props)addDataSourceProperty("username", ...)數據庫

四、password
此屬性設置從基礎驅動程序獲取鏈接時使用的默認身份驗證密碼。請注意,對於DataSources,這經過調用DataSource.getConnection(username, *password*)基礎DataSource 以很是肯定的方式工做。可是,對於基於驅動程序的配置,每一個驅動程序都不一樣。在基於驅動程序的狀況下,HikariCP將使用此password屬性來設置傳遞給驅動程序調用的password屬性。若是這不是你所須要的,例如徹底跳過這個方法而且調用。 默認值:無PropertiesDriverManager.getConnection(jdbcUrl, props)addDataSourceProperty("pass", ...)編程

 

經常使用配置後端

五、autoCommit
此屬性控制從池返回的鏈接的默認自動提交行爲。它是一個布爾值。 默認值:true框架

六、 connectionTimeout
此屬性控制客戶端(即您)將等待來自池的鏈接的最大毫秒數。若是在沒有可用鏈接的狀況下超過此時間,則會拋出SQLException。最低可接受的鏈接超時時間爲250 ms。 默認值:30000(30秒)性能

七、 idleTimeout
此屬性控制容許鏈接在池中閒置的最長時間。 此設置僅適用於minimumIdle定義爲小於maximumPoolSize一旦池達到鏈接,空閒鏈接將不會退出minimumIdle。鏈接是否因閒置而退出,最大變化量爲+30秒,平均變化量爲+15秒。超時以前,鏈接永遠不會退出。值爲0意味着空閒鏈接永遠不會從池中刪除。容許的最小值是10000ms(10秒)。 默認值:600000(10分鐘)測試

八、 maxLifetime
此屬性控制池中鏈接的最大生存期。正在使用的鏈接永遠不會退休,只有在關閉後纔會被刪除。在逐個鏈接的基礎上,應用較小的負面衰減來避免池中的大量消失。 咱們強烈建議設置此值,而且應該比任何數據庫或基礎設施規定的鏈接時間限制短几秒。 值爲0表示沒有最大壽命(無限壽命),固然是idleTimeout設定的主題。 默認值: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維基頁面。 默認值:無

1三、healthCheckRegistry
該屬性僅經過編程配置或IoC容器可用。該屬性容許您指定池使用的Codahale / Dropwizard 的實例HealthCheckRegistry來報告當前的健康信息。有關 詳細信息,請參閱健康檢查 wiki頁面。 默認值:無

1四、poolName
此屬性表示鏈接池的用戶定義名稱,主要出如今日誌記錄和JMX管理控制檯中以識別池和池配置。 默認:自動生成

 

不經常使用配置

1五、 initializationFailTimeout
若是池沒法成功初始化鏈接,則此屬性控制池是否將「快速失敗」。任何正數都取爲嘗試獲取初始鏈接的毫秒數; 應用程序線程將在此期間被阻止。若是在超時發生以前沒法獲取鏈接,則會引起異常。此超時被應用connectionTimeout 期。若是值爲零(0),HikariCP將嘗試獲取並驗證鏈接。若是得到鏈接但未經過驗證,將拋出異常而且池未啓動。可是,若是沒法得到鏈接,則會啓動該池,但後續獲取鏈接的操做可能會失敗。小於零的值將繞過任何初始鏈接嘗試,而且在嘗試獲取後臺鏈接時,池將當即啓動。所以,之後努力得到鏈接可能會失敗。 默認值:1

1六、isolateInternalQueries
此屬性肯定HikariCP是否在其本身的事務中隔離內部池查詢,例如鏈接活動測試。因爲這些一般是隻讀查詢,所以不多有必要將它們封裝在本身的事務中。該屬性僅適用於autoCommit禁用的狀況。 默認值:false

1七、allowPoolSuspension
該屬性控制池是否能夠經過JMX暫停和恢復。這對於某些故障轉移自動化方案頗有用。當池被暫停時,呼叫 getConnection()不會超時,並將一直保持到池恢復爲止。 默認值:false

1八、readOnly
此屬性控制默認狀況下從池中獲取的鏈接是否處於只讀模式。注意某些數據庫不支持只讀模式的概念,而其餘數據庫則在Connection設置爲只讀時提供查詢優化。不管您是否須要此屬性,都將主要取決於您的應用程序和數據庫。 默認值:false

1九、registerMbeans
該屬性控制是否註冊JMX管理Bean(「MBeans」)。 默認值:false

20、catalog
該屬性設置默認目錄爲支持目錄的概念數據庫。若是未指定此屬性,則使用由JDBC驅動程序定義的默認目錄。 默認:驅動程序默認

2一、connectionInitSql
該屬性設置一個SQL語句,在將每一個新鏈接建立後,將其添加到池中以前執行該語句。若是這個SQL無效或引起異常,它將被視爲鏈接失敗而且將遵循標準重試邏輯。 默認值:無

2二、driverClassName
HikariCP將嘗試經過DriverManager僅基於驅動程序來解析驅動程序jdbcUrl,但對於一些較舊的驅動程序,driverClassName還必須指定它。除非您收到明顯的錯誤消息,指出找不到驅動程序,不然請忽略此屬性。 默認值:無

2三、transactionIsolation
此屬性控制從池返回的鏈接的默認事務隔離級別。若是未指定此屬性,則使用由JDBC驅動程序定義的默認事務隔離級別。若是您有針對全部查詢通用的特定隔離要求,請僅使用此屬性。此屬性的值是從不斷的名稱Connection 類,如TRANSACTION_READ_COMMITTEDTRANSACTION_REPEATABLE_READ等 默認值:驅動程序默認

2四、 validationTimeout
此屬性控制鏈接測試活動的最長時間。這個值必須小於connectionTimeout。最低可接受的驗證超時時間爲250 ms。 默認值:5000

2五、 leakDetectionThreshold
此屬性控制在記錄消息以前鏈接可能離開池的時間量,代表可能存在鏈接泄漏。值爲0意味着泄漏檢測被禁用。啓用泄漏檢測的最低可接受值爲2000(2秒)。 默認值:0

2六、 dataSource
此屬性僅經過編程配置或IoC容器可用。這個屬性容許你直接設置DataSource池的實例,而不是讓HikariCP經過反射來構造它。這在一些依賴注入框架中可能頗有用。當指定此屬性時,dataSourceClassName屬性和全部DataSource特定的屬性將被忽略。 默認值:無

2七、schema
該屬性設置的默認模式爲支持模式的概念數據庫。若是未指定此屬性,則使用由JDBC驅動程序定義的默認模式。 默認:驅動程序默認

2八、 threadFactory
此屬性僅經過編程配置或IoC容器可用。該屬性容許您設置java.util.concurrent.ThreadFactory將用於建立池使用的全部線程的實例。在一些只能經過ThreadFactory應用程序容器提供的線程建立線程的有限執行環境中須要它。 默認值:無

2九、 scheduledExecutor
此屬性僅經過編程配置或IoC容器可用。該屬性容許您設置java.util.concurrent.ScheduledExecutorService將用於各類內部計劃任務的實例。若是爲ScheduledThreadPoolExecutor 實例提供HikariCP,建議setRemoveOnCancelPolicy(true)使用它。 默認值:無

相關文章
相關標籤/搜索