【发布时间】:2013-10-02 20:28:07
【问题描述】:
我有一个关于我在 Oracle 性能调优中看到的一般性问题。我有一个正在测试的查询。我无法提供一个简单的例子,它太大太复杂了,对不起! (我尝试降低它,但没有症状)
我第一次运行查询是 2 秒。随后的时间是 3、4 甚至 5 秒。这种情况始终如一地发生 - 如果我改变间距,我会再次获得 2 秒,然后它会恢复。
这与我的预期相反——在第一次之后,数据库不需要解析查询,块应该被读入缓冲区缓存。我唯一能想到的是它正在某处写入临时数据,以这种方式写入和读取它比读取它更快。但这当然没有意义。
有人知道为什么会这样吗?或者执行计划中的任何危险信号会导致这样的事情?
仅供参考,这是一个 SELECT,具有多个连接、聚合和视图。没有内部 PL/SQL。
谢谢
【问题讨论】:
-
这也与我的预期相反。解释计划的输出是否因运行而异?
-
我认为你不应该是crossposting这个...
-
@mustaccio - 抱歉,我认为它适合 DB 论坛,但后来我看到 Stackoverflow 中还有多少问题与我的标签匹配,并认为我在这里会有更好的运气。再说了,你是唯一回答你的人,你可能会得到分数!
-
@Twelfth 其他人建议我看看谢谢。
标签: sql performance oracle oracle11g query-performance