如何在 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不表示与 MS SQL 2012 的兼容性,但是 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 中鼓励评论:“我们将 jTDS 1.3.1 与 SQL Server 2014 一起使用,没有任何问题。”
关于java - MS SQL 上的 HikariCP 语句缓存(Microsoft JDBC 驱动程序 4.1),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28369388/