【问题标题】:Different Performance while Select a view in oracle在 oracle 中选择视图时的不同性能
【发布时间】:2016-10-24 00:45:45
【问题描述】:

我尝试调整现有视图。很抱歉没有发布示例,但我未能复制问题。而且我无法理解这种行为。 我的视图(视图 A)基于另一个视图(视图 b)和一个表(表 C)。在选择列表中,使用了其中的一些字段和一些包调用。 特定 Select 的运行时间接近 32 秒。 我分析了 Statement 和 startet 以优化 View b。我删除了视图 a 中不需要的所有列,并减少了视图 b 的开销。 在此之后,View a 上的选择快了 5 秒。可以肯定的是,我多次执行选择以获得有效的平均执行时间。 几分钟后,我再次执行了声明,我得到了 32 秒。我执行了多次,但它不会变得更快。

此数据库上没有流量,数据量没有变化。到目前为止,这是我在获得合理结果方面遇到问题的第一个陈述,将分析该陈述。 我首先看的解释计划看起来不错。没有全表扫描(我知道 FTS 总体来说还不错)。我不知道为什么执行时间如此不稳定,这使得优化视图和比较结果变得困难。

我认为这听起来像是一个转储问题,但我看不出问题所在,也不知道下一步该做什么。

感谢和抱歉我的英语不好。

【问题讨论】:

  • 任何 SELECT 语句中的 PL/SQL(包)函数调用都可能对性能有害。每次调用都会在 SQL 和 PL/SQL 之间进行上下文切换的开销,有时由于查询优化的方式,即使最终结果只是一个函数,也可能会调用数千或数百万次几行。

标签: oracle performance view


【解决方案1】:

不稳定的执行时间

1) 您是否清理了 select 语句之间的缓冲区缓存?

2) 在某些情况下,您可以使用 result_cacheing 改进您的功能和视图。但是您必须弄清楚它是否适用于您的问题? (关于resultchahe的长篇大论)[http://www.oracle.com/technetwork/articles/datawarehouse/vallath-resultcache-rac-284280.html]

【讨论】:

    猜你喜欢
    • 2012-05-01
    • 2017-02-27
    • 2017-07-28
    • 1970-01-01
    • 2011-03-09
    • 1970-01-01
    • 1970-01-01
    • 2018-09-01
    • 1970-01-01
    相关资源
    最近更新 更多