0

我最近将一组 Oracle SQL 查询移到了一个包含表函数的包中,我将在其中返回流水线数据。

然而,我开始观察到一些不寻常的事情。V$SQL 统计数据,如 buffer_gets、fetches、cpu_time、execution_time 等,已经开始显示累积数字,并且随着查询的每次执行,它们会越来越高。

这是通常的行为吗?

4

1 回答 1

2

这是预期的行为。

涉及很多共享资源。如果您的应用程序在池中具有十几个数据库连接,所有连接都在执行相同的工作,那么您可以拥有多个用户同时从它们获取的 SQL(例如,连接 1 获取 ABC 的发票,而连接 2正在获取 XYZ 的发票)。V$SQL(或 RAC 环境中的 GV$SQL)将显示大多数详细信息的累积总计(并且诸如 USERS_EXECUTING 之类的内容将是所有会话中的当前值)。

它们唯一会被重置的情况是当 SQL 超出共享区域时,通常是当它有一段时间没有被使用并且另一个 SQL 需要资源,或者像数据库关闭这样的罕见事件时。

于 2016-08-30T03:51:05.540 回答