如何解决连接池 - 如何找到 CallableStatement 使用连接池特别是 HikariCP? SQL Profiler 还是 PerfMon 计数器?
如何设置分析器跟踪以发现我的 CallableStatement 使用连接池?
我设置了一个跟踪来捕获 Audit:Login、Audit:Logout、RPC:Completed。但我所看到的只是1-Non-Pooled(下图)。 Hikari/JDBC 驱动程序中是否有任何配置可以使池工作?我希望我对服务的第二次调用是 2-Pooled 在分析器中。
Hikari 配置(我使用 SQLServerDataSource 和 SQLServerConnectionPoolDataSource 作为 datasourceclassname,结果相同):
public HikariDataSource createHikariDataSource() {
HikariDataSource dbDatasource = new HikariDataSource();
dbDatasource.setDataSourceClassName("com.microsoft.sqlserver.jdbc.SQLServerConnectionPoolDataSource");
dbDatasource.addDataSourceProperty("databaseName","tempdb");
dbDatasource.setPoolName("myJDBCTestConnectionPool");
dbDatasource.setUsername("someuser");
dbDatasource.setPassword("totallysafepassword");
dbDatasource.setMinimumIdle(5);
dbDatasource.setMaximumPoolSize(10);
dbDatasource.setConnectionTimeout(300);
dbDatasource.setIdleTimeout(1000);
dbDatasource.setMaxLifetime(1000);
return dbDatasource;
}
Proc 执行代码(已编辑)
public void execMyProc() {
HikariDataSource hkds = createHikariDataSource();
Connection conn = hkds.getConnection();
CallableStatement stmt3 = conn.prepareCall({? = CALL dbo.connectionpooltest @InputParam1=?});
stmt3.registerOutParameter(1,Types.INTEGER);
stmt3.setInt(2,1);
ResultSet rs1 = stmt3.executeQuery();
rs1.close();
conn.close();
}
HikariCP 和 mssql-jdbc maven pom.xml 条目
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>3.4.5</version>
</dependency>
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>8.4.0.jre8</version>
</dependency>
SQL 代码
use tempdb;
go
create or alter proc connectionpooltest (@InputParam1 int)
as
begin
return @InputParam1;
end;
go
分析器截图:
Java 版本:1.8.281(语言级别 11 或 8)
SQL Server 2017 开发人员版(2014 和 2019 的行为相同)
无论如何可以可靠地说我的 HikariCP 配置正在使用池?如何使用分析器/prefmon/其他工具找到它?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。