【发布时间】:2019-02-02 13:45:24
【问题描述】:
您好,我有一个 Oracle 12c 数据库,总 SGA 为 12 GB,共享池区域目标设置为 4 GB。
应用程序有一个存储过程,观察到它存在间歇性性能问题。
已确定存储过程所采用的执行路径,并且该路径上的单个查询对其具有低成本计划。
我在 100 次循环中运行存储过程,我看到它以 74 毫秒的执行时间开始,在第 100 次循环结束时,该过程的执行时间约为 5000 毫秒。
寻找关于为什么会这样的指针?
proc 中的查询类似于
SELECT a, b
FROM ( SELECT a, b
FROM tab
ORDER BY c)
WHERE ROWNUM = 1;
Oracle,正如在这种情况下所观察到的,没有为同一个查询执行创建多个计划。 我已将优化器模式设置为 first_rows 并验证了 where 子句上的索引,但没有太大影响。
【问题讨论】:
-
请提供存储过程的代码sn-p以供同行审阅,可以通过编辑问题来实现。
-
间歇性性能问题是最难诊断的,如果没有更多信息,远程诊断是不可能的。几乎可以肯定,问题不在于您发布的查询,而是与您的存储过程所做的其他事情有关。如果您需要一些具体建议,您必须发布更多详细信息。
标签: oracle performance stored-procedures plsql