【问题标题】:Varying performance of Oracle query [closed]Oracle查询的不同性能[关闭]
【发布时间】:2016-09-29 00:30:54
【问题描述】:

我有一个将表连接到某些数据字典视图的查询。查询有时可以正常工作,但有时执行时间过长。当它这样做时,即使我取消并再次运行它 100 次它也不会响应。

查询是:

 SELECT
      /*+  PARALLEL(auto) */
     t.id
    FROM table1 t ,
        (SELECT     /*+  PARALLEL(auto) */ DISTINCT r.INDEX_VALUE AS id,
          r.LOCAL_ROWID,
          r.REMOTE_ROWID
        FROM DBA_COMPARISON_COLUMNS c,
          DBA_COMPARISON_ROW_DIF r,
          DBA_COMPARISON_SCAN s
        WHERE R.SCAN_ID       = S.SCAN_ID
        AND c.COMPARISON_NAME = 'CMP_name'
        AND s.root_SCAN_ID    = '{scan_id}'
        AND r.STATUS          = 'DIF'
        ) dif
      WHERE t.id = dif.id;

谁能帮我解决这个问题?

【问题讨论】:

  • 不可能回答这样的问题。请分享查询以及查询不起作用时遇到的错误。
  • 为什么这个问题被投票两次?这个问题甚至没有代码可以看。
  • 查询没有错误,运行时间太长所以取消了。
  • 您能分享一下查询吗?
  • 瞧!一旦你发布了查询,结果是“两个表之间的简单连接”实际上是一个表和一个连接三个数据字典视图的内联视图之间的连接。毕竟没那么简单。下次您提出问题时,请考虑在一开始就发布所有相关信息,而不是让人们将其拖出您的行列。帮助我们为您提供帮助。

标签: sql oracle performance oracle11g query-optimization


【解决方案1】:

您的查询持续运行可能有 100 个原因,具体取决于(但不限于)您的数据库、将数据写入同一表的其他表、表上的锁定等。

您应该首先检查 v$session_longops 视图以查看是否存在此查询以及其他一些详细信息。

我通常使用以下方法进行故障排除。您可以检查您的查询是否存在。如果是,找到sid 并将其回溯到视图以检查锁定等。

select sesion.sid,sql_text
from v$sqltext sqltext, v$session sesion
where sesion.sql_hash_value = sqltext.hash_value
and sesion.sql_address = sqltext.address
and sesion.username is not null
order by sqltext.piece;

【讨论】:

    【解决方案2】:

    您的查询基于显示 DBMS_COMPARISON 输出的视图。所以结果集的大小会根据比较产生的增量而变化。如果有很多漂移,则增量可能非常大,因为您正在查询行差异。

    另一个潜在问题:您的查询没有将 DBA_COMPARISON_COLUMNS 连接到其他表。可能您应该在连接条件中包含 COMPARISON_NAME,如下所示...

    FROM DBA_COMPARISON_COLUMNS c,
          DBA_COMPARISON_ROW_DIF r,
          DBA_COMPARISON_SCAN s
        WHERE c.COMPARISON_NAME = 'CMP_name'
        AND r.COMPARISON_NAME = c.COMPARISON_NAME
        AND s.COMPARISON_NAME = c.COMPARISON_NAME
        AND R.SCAN_ID       = S.SCAN_ID
        AND s.root_SCAN_ID    = '{scan_id}'
        AND r.STATUS          = 'DIF'
    

    【讨论】:

      猜你喜欢
      • 2018-03-30
      • 1970-01-01
      • 2020-11-03
      • 2015-01-17
      • 1970-01-01
      • 2023-03-09
      • 1970-01-01
      • 2017-03-30
      • 2011-12-20
      相关资源
      最近更新 更多