MS SQL 上的 HikariCP 语句缓存(Microsoft JDBC 驱动程序 4.1)

HikariCP statement caching on MS SQL (microsoft JDBC driver 4.1)

如何在 MS SQL RDBMS 中为 HikariCP 连接池启用语句缓存?

对于 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 年及更高版本的内容。

语句缓存必须由数据库驱动提供,HikariCP不提供任何语句缓存。据我所知 (*),"Microsoft JDBC Driver for SQL Server" 也没有。这留下了使用替代数据库驱动程序 jTDS 的选项。 jTDS home page does not indicate compatability with MS SQL 2012 but, the sourceforge project page 可以(我没有使用 jTDS,所以我假设项目页面是最新的 (**))。

默认情况下,jTDS 驱动程序缓存每个连接 500 个语句(请参阅 FAQ page 上关于 maxStatements 的注释)。

不使用 dataSourceClassName com.microsoft.sqlserver.jdbc.SQLServerDataSource,而是使用 net.sourceforge.jtds.jdbcx.JtdsDataSource(也在 this page 中提到,这也表明 HikariCP 已使用 jTDS 驱动程序进行测试)。

(*) SQLServerDataSource 可用的选项记录在 ISQLServerDataSource 中,但我找不到语句缓存的任何选项。

(**) 在最后一个 bug-reports 中鼓励评论:"We are using jTDS 1.3.1 with SQL Server 2014 with no issues."