gpt4 book ai didi

java - 如何查找应用程序的数据库往返次数

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:56:00 24 4
gpt4 key购买 nike

我是一名 Java 程序员,我想知道我的应用程序完成了多少次数据库调用/访问。我们使用 Oracle 作为我们的关系数据库。
使用 Oracle,我了解了一种更改 session 统计信息和生成跟踪文件的方法。以下是要触发的查询:

ALTER SESSION SET TIMED_STATISTICS = TRUE;

ALTER SESSION SET SQL_TRACE = TRUE;

生成跟踪文件后,可以使用 TKProf 实用程序读取它们。但是不能使用这种方法,因为:

  1. 我的应用程序使用 hibernate 和 spring 框架,因此应用程序没有 session 句柄。
  2. 即使我们获得了跟踪文件,我也需要知道这组查询是一次性(批量)触发还是单独触发。我不确定 TkProf 输出是否有助于理解这一点。

有没有人有更好的建议?

最佳答案

在 TkProf 中,您基本上可以将往返次数视为“调用”次数(尽管存在异常(exception)情况,因此需要较少的往返次数,例如,理论上,单行选择的解析/执行/获取是,可能在单次往返中,即所谓的 oracle 的“精确获取”功能)。然而,作为估计,tkprof 数据已经足够好了。

如果跟踪等待事件,您应该直接在原始跟踪中看到“SQL*Net from/to client”等待事件,但我认为 tkprof 没有显示它(不确定,试一试)。

另一种方法是查看 session 统计信息:

select value
from v$mystat ms, v$statname sn
where ms.value > 0
and ms.statistic#=sn.statistic#
and sn.name IN ('SQL*Net roundtrips to/from client')

但是,如果您在您的应用中这样做,您的应用会变慢,并且您收到的数字将包括该选择的往返次数。

A 写了一些关于往返优化的文章:

关于java - 如何查找应用程序的数据库往返次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4853495/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com