簡體   English   中英

Oracle數據庫10g VIEW性能

[英]Oracle Database 10g VIEW performance

我的一個Oracle數據庫中的一個視圖執行時間太長。 語句運行時,它似乎並沒有停止。

無論如何,我們是否可以驗證此視圖的性能,或者如何檢查語句會話是否正在“掛起”?

謝謝,N2EE

更新

我意識到問題出在視圖中的基礎查詢。 感謝Edwin提供的自動跟蹤修復程序。

查詢的執行很可能非常慢。

您可以使用說明計划查看查詢如何在數據庫中執行。

如果您擁有SQL * Plus,則可以使用以下語句輕松完成此操作:

set autotrace traceonly

然后輸入查詢,您將獲得有關查詢的統計信息,如下所示:

SQL> set autotrace traceonly
SQL>  select * from o_drops;

4461 rows selected.


Execution Plan
----------------------------------------------------------
Plan hash value: 3820245448

-----------------------------------------------------------------------------
| Id  | Operation         | Name    | Rows  | Bytes | Cost (%CPU)| Time     |
-----------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |         |  4287 |   280K|    11  (10)| 00:00:01 |
|   1 |  TABLE ACCESS FULL| O_DROPS |  4287 |   280K|    11  (10)| 00:00:01 |
-----------------------------------------------------------------------------


Statistics
----------------------------------------------------------
          1  recursive calls
          0  db block gets
        333  consistent gets
         48  physical reads
          0  redo size
     337057  bytes sent via SQL*Net to client
       2316  bytes received via SQL*Net from client
        299  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
       4461  rows processed

如果其中一種資源非常多,則可以重寫查詢和/或向正在使用的表中添加索引。

您需要查看組成視圖的查詢的性能。 最好的方法是對視圖使用的sql語句進行解釋計划。 這將表明它是在執行全表掃描還是其他一些非最佳行為。 調整查詢,您的視圖應運行得更好。

您是在談論創建或替換現有視圖(即執行CREATE或REPLACE VIEW ...語句)還是從視圖中進行選擇。

在前一種情況下,可能是某個會話已將其鎖定。 例如,如果某人正在通過視圖進行更新或刪除,則您將無法替換它。 根據您的版本,您可能可以通過查看v $ session的“ BLOCKING_SESSION”列來查看阻止程序。

在后一種情況下,不是慢的視圖而是查詢。 該視圖幾乎無關緊要。 檢查說明計划(最好將DBMS_XPLAN.DISPLAY_CURSOR與來自v $ sql的sql_id一起使用),並查看其計划。 v $ session_longops可以給出一個指針。

根據快照ID生成AWR報告

有兩個SQL腳本可以創建AWR報告。 1. awrrpt.sql如果只有一個Oracle數據庫,請運行awrrpt.sql sql腳本。

  1. awrrpti.sql如果我們有多個Oracle實例(如RAC),請運行awrrpti.sql腳本,以便我們可以為awr報告創建特定實例。

AWR報告SQL腳本$ ORACLE_HOME / rdbms / admin的位置

假設問題是基礎查詢,則性能問題可能是因為尚未分析所使用的表。
您可以使用DBMS_STATS包來更新Oracle關於表的信息,然后查看查詢速度是否提高。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM