2015-02-06 112 views
3

如何在MS SQL RDBMS中爲HikariCP連接池啓用語句緩存?在MS SQL上緩存HikariCP語句(Microsoft JDBC驅動程序4.1)

對於MySQL是通過:

dataSource.cachePrepStmts=true 
dataSource.prepStmtCacheSize=250 
dataSource.prepStmtCacheSqlLimit=2048 

對於PostgreSQL通過:

hikari.dataSource.prepareThreshold=1 

對於Oracle,以下工作:

dataSource.implicitCachingEnabled=true 
and adjusting via setMaxStatements() method of OracleDataSource 

但我還沒有發現任何的MS SQL 2012及更高版本。

回答

4

語句高速緩存必須由數據庫驅動程序提供,HikariCP不提供任何語句高速緩存。就我所能看到的(*)而言,「用於SQL Server的Microsoft JDBC驅動程序」也不例外。這留下了使用替代數據庫驅動程序jTDS的選項。 jTDS home page不表示與MS SQL 2012兼容,但sourceforge project page(我沒有使用jTDS,所以我假設項目頁面更新(**))。

默認情況下,jTDS驅動程序爲每個連接緩存500條語句(請參閱FAQ page上關於maxStatements的註釋)。

代替使用dataSourceClassNamecom.microsoft.sqlserver.jdbc.SQLServerDataSource的,使用net.sourceforge.jtds.jdbcx.JtdsDataSource(上this page這也表明HikariCP用的JTDS驅動器測試也提到)。

(*)SQLServerDataSource的可用選項記錄在ISQLServerDataSource中,但我找不到語句高速緩存的任何選項。

(**)鼓勵在最後的bug-reports之一發表評論:「我們在SQL Server 2014中使用jTDS 1.3.1,沒有任何問題。」

+2

這已經有一段時間了,但我過去使用jTDS取得了巨大成功。 – brettw 2015-02-07 04:22:07

+3

不幸的jtds只有jdbc3兼容。 – kulatamicuda 2015-02-08 16:14:00

相關問題