测量Java应用程序中的sql执行时间

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

有些人可能会建议我使用AOP来做到这一点,但我试图尽可能避免这种情况。 还有另一种方式吗?

如果您没有在为您提供DataSource的应用程序服务器中运行该应用程序,您会发现log4jdbc项目很有用。 项目提供的jdbc.sqltiming记录器将允许您记录执行的SQL语句的执行。

您可以在依赖于DataSource的应用程序中使用它,方法是将 ConnectionSy对象中的DataSource返回的连接包装起来 。 这需要更改代码库。

当然,在撰写本文时还有其他选择:

  • P6Spy项目仍可在大多数应用程序服务器中使用。 虽然确实过时了(并被一些人认为已经放弃),但它绝不是过时的。
  • JAMon API允许监视执行的SQL命令的执行时间 。 这需要使用JAMon API来监控连接。

具有讽刺意味的是,在查看您的问题时,右侧的广告是针对Appdynamics Lite Java性能工具的 。

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

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

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

  3. 我们通过一个自动测量所有sql调用的库来运行所有sql调用。

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

你的环境中有这样的东西吗?

看一下这个。 他们提到使用带有JDBC的Sql Recorder。 它可能适合你。

还有什么比P6Spy更好的?

如果你想检查你的java应用程序执行时间,然后打印日期然后执行该语句并再次打印日期,你可以看到差异。 喜欢

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

如果要查看SQL Server所花费的时间,请在SQL查询分析器中执行查询,在窗口右下角,您将找到执行查询所需的时间。

谢谢