在Java应用中测量SQL执行时间

5

有没有一种简单的方法来测量由JDBC执行的所有SQL语句的执行时间并将结果打印到输出中?

有些人可能建议我使用AOP来完成这个任务,但如果可能的话,我想避免这样做。还有其他方法吗?

5个回答

2

2
如果您没有在提供DataSource的应用程序服务器中运行应用程序,您会发现log4jdbc项目非常有用。该项目提供的jdbc.sqltiming记录器将允许您记录执行的SQL语句。
您可以在依赖于DataSources的应用程序中使用此功能,方法是在ConnectionSpy对象中包装从DataSource返回的连接。这将需要更改您的代码库。
当然,在撰写本文时还有其他选项:
  • P6Spy项目仍然可以在大多数应用程序服务器中使用。虽然它确实有些过时(并被一些人认为已经被放弃),但它绝不过时。
  • JAMon API允许监视执行的SQL命令的执行时间。这将需要使用JAMon API来监视连接。

1

我们使用三种不同的方式来显示执行时间。

  1. 我们使用内置的Sql Server工具来显示执行时间/频率/io等。我自己不做这个,所以我不知道确切的工具是什么。

  2. 我们使用AviCode来跟踪超过定义限制的执行时间。

  3. 我们通过一个库运行所有的sql调用,该库会自动度量所有的sql调用。

我们使用这些不同的方法,因为它们提供了不同的执行视图。当出现问题时,我们查看所有这些视图,以确保它们一致。

您的环境中是否有类似的工具可用?


1

1

如果你想要检查Java应用程序所需的执行时间,那么打印日期,然后执行语句,再次打印日期即可看到差异。例如:

System.out.println(new Date()); stmt.executeUpdate(); System.out.println(new Date());

如果要查看SQL服务器所需的时间,请在SQL查询分析器中执行查询,在窗口右下角下方可以找到执行查询所需的时间。

谢谢


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接