Oracle中的执行成本与执行时间

Oracle中的执行成本与执行时间,oracle,performance,Oracle,Performance,我有一个连接DW中19个表的报表查询。我知道我们的DW模式设计不好。 此查询每天晚上运行,并收集昨天的活动。我们的系统于2008年6月投入使用,因此与整个数据量相比,1天的数据量只是一小部分 查询执行时间一般为5~10分钟,执行成本约为70000。 它使用索引/嵌套循环。成本很低。一切看起来都很好 本月,查询速度越来越慢,但执行成本保持不变。 它仍在使用索引,执行成本仍然很低,但运行时间超过1小时 有什么想法吗???也许你的乐观主义者统计数据已经过时了。优化者计算的成本是基于其统计数据,因此,如

我有一个连接DW中19个表的报表查询。我知道我们的DW模式设计不好。 此查询每天晚上运行,并收集昨天的活动。我们的系统于2008年6月投入使用,因此与整个数据量相比,1天的数据量只是一小部分

查询执行时间一般为5~10分钟,执行成本约为70000。 它使用索引/嵌套循环。成本很低。一切看起来都很好

本月,查询速度越来越慢,但执行成本保持不变。 它仍在使用索引,执行成本仍然很低,但运行时间超过1小时


有什么想法吗???

也许你的乐观主义者统计数据已经过时了。优化者计算的成本是基于其统计数据,因此,如果这些数据没有改变,成本也不会改变。但是,如果数据比以前多得多,实际运行查询所需的时间就会改变。

我有一些想法,可能会导致突然减速,但最好的出发点是从数据库中获取信息,了解它在哪里花费时间

如果您有权访问代码和SQL*Plus,那么起点应该是:

set autotrace on
然后运行查询

(这将自动执行您过去必须执行的步骤,以启用SQL跟踪,然后tkprof输出)

另一个选择是在你的坏工作周围拍摄一个带有快照周期的Statspack

这至少应该缩小花费时间的范围(物理I/O、CPU等)


这可能只是因为数据的累积增加使您的查询超出了资源限制。

我过去也遇到过同样的问题。在我的例子中,我们的一些表有高水位线(由于每天运行多个delete语句)

我们使用ALTER TABLE MOVE降低了高水位线,并恢复到正常速度

问候,,
Vikas

您尚未开始提供任何有助于诊断问题的信息。无查询、无模式、无统计信息、无数据量。你的问题相当于打电话给医生说“哦”,希望他能诊断出你的毛病。我理解你的意思。我认为不可能解释这18个表以及为什么查询是这样写的,哪个表是主要的卷命中率,我们有多少维度等等。。。毕竟这是我们的DW模式的全部文档。那么我担心互联网修复它是不现实的。而且
它使用索引/嵌套循环
也不是很有教育意义。是否已检查所有联接(以及何处条件)是否使用索引?也许有些表不是这样,它只是显示了一些表有更多的数据。(连接到100行表通常很快,有索引或没有索引)是。。我现在正在做设置自动跟踪。到目前为止需要15分钟,而且还在运行。。谢谢你的评论好的-如果这没有给你答案,把结果放在这里-我们将无法从它逆向工程您的数据仓库,但它可能会提供一个很好的线索,你的时间在哪里。