我一直在研究HikariCP在我的一个项目中使用它。 github中项目页面的statement cache section表示,它不支持连接池级别的预准备语句缓存。
但是initialization section具有以下代码段
HikariConfig config = new HikariConfig();
config.setJdbcUrl("jdbc:mysql://localhost:3306/simpsons");
config.setUsername("bart");
config.setPassword("51mp50n");
config.addDataSourceProperty("cachePrepStmts", "true");
config.addDataSourceProperty("prepStmtCacheSize", "250");
config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");
HikariDataSource ds = new HikariDataSource(config);
并设置准备好的语句缓存配置。是否为下面的连接池或驱动程序配置了它?
另外,addDataSourceProperty方法支持哪些属性?
最佳答案
在您的情况下,数据源由MySql配置和使用。
基本上,您可以将相关属性发送到您的实现。
例如,对于oracle,您可以发送
dataSource.addDataSourceProperty("oracle.jdbc.defaultNChar", "true");
并且此属性将在oracle实现中使用
HikariCP将其保存在属性中,并将其复制到驱动程序属性中,并在connect上使用它:
for (Entry<Object, Object> entry : properties.entrySet()) {
driverProperties.setProperty(entry.getKey().toString(), entry.getValue().toString());
}
....
driver.connect(jdbcUrl, driverProperties);
关于oracle - HikariCP准备好的语句缓存,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45546531/