java - JDBC - SQL 语句执行时间记录

标签 java sql jdbc time

我需要在我的 Java EE 应用程序中记录 SQL 执行时间(任何进一步的统计数据都是可选的奖励)。

一切都以一种或多或少的标准方式进行设置:应用服务器上的数据源服务于池化的 JDBC 连接。

应用程序使用以下数据库访问组合:

  • hibernate 和
  • Spring JDBCTemplate

它运行于:

  • Glassfish OSE 和
  • 甲骨文数据库

我知道:Anything better than P6Spy?然而,从我的角度来看,问题/答案已经过时了。

到目前为止我发现了什么:

非常欢迎根据经验提出建议。

请注意,我对这样的答案很感兴趣:我们正在使用 XYZ,这是我们的经验,而不是我刚才用谷歌搜索并感觉...

最佳答案

如果你想要精确的 SQL 执行时间,那么最好的选择是 sql trace。但是您想将它放在您的 Java EE 应用程序中,因此显然需要一个稍微准确的执行时间。

以下是我建议的内容 [我已经在我的代码中实现了它们]:

  1. 如果您只是想将它用于登录目的,那么请准备好适当的 Log4j 调试消息,这些消息将与日志条目一起打印时间。

  2. 我为我的应用程序实现了一个 BatchLog 表,用于记录操作的开始和结束时间。因此,在您的情况下,它将是查询的开始和结束时间。现在,如果它只是一个查询,那么触发器可能会在这里有所帮助,否则您可以在运行查询之前和之后更新日志表。或者更好的是一个存储过程,它可以处理整个事情并提供更准确的数据。

关于java - JDBC - SQL 语句执行时间记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18269855/

相关文章:

java - 如何使用Spring管理与多个数据库的连接

mysql - 了解为什么外键引用同一张表中的主键?

java - 关于从终端编译 Java 程序的 JDBC 驱动程序问题

java - HQL 与 Null 检查一对一关系

java - 将模块从 Java 项目中分离出来的策略

php - 执行 PDO 查询时出现错误

SQL group by 并根据每列中的条件进行选择

java - 使用java在数据库中保存unicode字符

Java返回不可能的随机数

java - 从字符串中删除字符