Jas*_*son 6 java spring pooling
我正在开发一个项目,我们正在优化使用样板 jdbc 代码的遗留代码库,而在我们的新项目中,我们使用 springs jdbcTemplate。我发现遗留代码中的查询时间快了两倍,并且很好奇它的 jdbcTemplate 是否有问题或其他什么......
我们使用 apache commons BasicDataSource(提供池化)。我的问题是,我不太确定池化是否真的正常工作。下面是我的配置...
数据源
数据源的接线
为了分析这一点,我启动了应用程序并连接了所有 jdbc 的东西,然后简单地运行相同的查询 100 次。我还使用 log4j 来获取有关实际性能的一些指标。1 行将打印实际的 jdbc 调用时间,我在整个 jdbcTemplate 调用周围有一个额外的包装器,以查看整个过程需要多长时间(如下所示)...
编辑:添加 RowMapper 的图像
下面显示了我的日志的样子......
DEBUG org.springframework.jdbc.core.JdbcTemplate - Executing prepared SQL query
DEBUG org.springframework.jdbc.core.JdbcTemplate - Executing prepared SQL statement [my select query]
DEBUG org.springframework.jdbc.datasource.DataSourceUtils - Fetching JDBC
Connection from DataSource
DEBUG com.custom.frameworkx.spring.datasource.DebugDataSource - before executeQuery() sql=my select query
DEBUG com.custom.frameworkx.spring.datasource.DebugDataSource - after executeQuery() [time=30ms] sql=my select query
DEBUG com.custom.frameworkx.spring.datasource.DebugDataSource -
DebugResultSet.close()
DEBUG org.springframework.jdbc.datasource.DataSourceUtils - Returning JDBC Connection to DataSource
Full jdbcTemplate call time: 119
Run Code Online (Sandbox Code Playgroud)
请注意实际查询时间是如何花费30毫秒的。然而整个 jdbcTemplate 调用需要119毫秒。我认为这是来自 jdbcTemplate 开销,例如添加 + 释放资源,所以我想这可能是可以接受的,但在此代码的旧版本中,整个连接创建 + 查询 + 资源释放的速度仍然是原来的两倍。
在通过 org.springframework.jdbc.datasource.DataSourceUtils.java 调试时,我可以看到代码转到第 328 行,对我来说,这看起来并不像将连接返回到池以供以后重用,这是springs jdbcTemplate 的预期行为?对我来说,如果池化工作正常,它应该到达第 323 行。
| 归档时间: |
|
| 查看次数: |
2048 次 |
| 最近记录: |