3

如何在 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 及更高版本的东西。

4

1 回答 1

4

语句缓存必须由数据库驱动程序提供,HikariCP 不提供任何语句缓存。据我所见(*),“Microsoft JDBC Driver for SQL Server”也没有。这留下了使用替代数据库驱动程序 jTDS 的选项。jTDS主页并未表明与 MS SQL 2012 的兼容性,但sourceforge 项目页面确实如此(我没有使用过 jTDS,所以我假设项目页面是最新的 (**))。

默认情况下,jTDS 驱动程序为每个连接缓存 500 条语句(请参阅常见问题页面maxStatements上的评论)。

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

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

(**) 在最后的错误报告之一中鼓励评论:“我们将 jTDS 1.3.1 与 SQL Server 2014 一起使用,没有任何问题。”

于 2015-02-06T17:57:44.737 回答