我们的IT部门最近受到我们IT部门的谴责(运行良好),因为我们的查询具有破坏数据库稳定性和/或崩溃的实际可能性,因此运行查询的成本非常高。我们都不是DBA的;只是研究人员对数据库编写和执行查询,我可能是唯一一个在谴责之前查看解释计划的人。查询成本与执行速度+并行度
我们被告知,超过100的查询成本应该非常少见,并且不应该运行超过1000的成本查询。我遇到的问题是成本似乎与执行时间没有关系,而且我在优化查询时失去了生产力。
作为一个例子,我有一个查询在5秒钟内执行,费用为10844.我重写了查询以使用包含我需要的大部分信息的视图,并将成本降至109,但检索相同结果的新查询需要40秒才能运行。我发现了一个问题,在这里与一个可能的解释:
Measuring Query Performance : "Execution Plan Query Cost" vs "Time Taken"
这个问题使我并行提示。我在成本10884查询中尝试使用/*+ no_parallel*/
,但成本没有变化,执行时间也没有变化,所以我不确定并行性是更快执行时间还是更高成本的解释。然后,我尝试使用/*+ parallel(n)*/
提示,并发现n
的值越高,查询的成本就越低。在成本10844查询的情况下,我发现/*+ parallel(140)*/
将成本降至97,执行时间仅略有增加。
这似乎是一个理想的“欺骗”,以满足我们的IT部门提出的要求,但后来我读了这一点:
本文包含了这样一句话:
并行执行可以使单个操作能够利用所有系统资源。
所以,我的问题是:
我是否实际使用/*+ parallel(n)*/
暗示具有非常高的并行度将服务器上的资源较为紧张,即使我降低了成本?
假设没有并行性,执行速度是比成本更好的资源使用衡量标准吗?
什么的,为什么业务部门往往建立了自己的数据库,以绕过它限制一个很好的解释。 – 2014-09-03 21:16:04