2016-08-16 20 views
0

本番環境ではパフォーマンス上の問題があります。 Mv参照プログラムは、ほぼ13〜14時間長く実行されています。パフォーマンスチューニングのヒント-Plsql/sql-Database

MV参照プログラムで、MVを参照しようとしています。その中でMVの1つは長い間実行されています。

以下は、長い間実行されているMVスクリプトです。

出荷表には何百万ものレコードが含まれており、上記のクエリはデータの60〜70%を抽出しようとしています。私たちは、データの読み込みが理由であると考えています。 上記のスクリプトのパフォーマンスを向上させようとしています。データを制限する日付フィルタを追加しました。

SELECT rcvt.transaction_id, 
    rsh.shipment_num, 
    rsh.shipped_date, 
    rsh.expected_receipt_date, 
    (select rcvt1.transaction_date from rcv_transactions rcvt1 
    where rcvt1.po_line_id = rcvt.po_line_id 
    AND rcvt1.transaction_type = 'RETURN TO VENDOR' 
    and rcvt1.parent_transaction_id=rcvt.transaction_id 
    )transaction_date 
    FROM rcv_transactions rcvt, 
    rcv_shipment_headers rsh, 
    rcv_shipment_lines rsl 
    WHERE 1      =1 
    AND rcvt.shipment_header_id =rsl.shipment_header_id 
    AND rcvt.shipment_line_id =rsl.shipment_line_id 
    AND rsl.shipment_header_id =rsh.shipment_header_id 
    AND rcvt.transaction_type = 'RECEIVE' 
    AND TRUNC(rsh.creation_date) >= NVL(TRUNC((sysdate - profile_value),'MM'),TRUNC(rsh.creation_date)); 

1年間のプロファイルでは、改善が見られますが、2年間は前回のクエリより悪化しています。

パフォーマンスを向上させるためのご提案です。

PLSのは、私は定期的に外にスカラー副問合せが参加することを引き出すだろう

+2

さて、explain plan、tkprof、ADDMレポートのような基本的なプロファイリングツールを実行しましたか?ここでは、システム、環境、および多くの他の多くの詳細を深く理解することなく、いくつかのクエリを調べることで、パフォーマンスの問題を診断することは誰もいません。ごめんなさい。 – OldProgrammer

+1

インクリメンタルリフレッシュを行っていますか?または完全リフレッシュ?第2のアプローチは、非決定的な関数呼び出し( 'sysdate')を参照しているので完全にリフレッシュする必要があります。ソーステーブルのMVログに応じて増分リフレッシュを実行する可能性があります(単に外部結合を行うか、または単にそれを分解するのではなく、インラインサブクエリについてはわかりません)。通常、MVはデータの集約やリモートデータベースからのデータの複製に使用されますが、データベースリンクや集約関数は表示されません。 –

+0

@JustinCaveは更新してくれてありがとう。私たちは完全リフレッシュではなく、完全リフレッシュを行っています理由は毎日平均10kのレコードがベーステーブルに挿入され、高速参照を使用するとシステムパフォーマンスが低下します。 –

答えて

1

を助けます。

スカラーサブクエリの原価計算はpoorとなり、他のオプションを指定するのではなく、索引を使用して多数のレコードを検索することになります。

「メイン・クエリは、その後、選択リスト内のスカラ副問合せを持つOracleは、したがって、計画表に2つの独立した計画を示し

駆動クエリの一つ - 。。2のコストを持っている、とのために1

しかし、Oracleでは、スカラー副問合せの実行回数(多くの場合、最悪の場合のシナリオを予測することができます)は「認識」されません。また、クエリのトータルコストの中で実行するためのコストの余裕はありません」

+0

あなたの回答を11g以前のものと関連づけることが考えられます。 Oracle 12cでは、オプティマイザはスカラ副問合せをネスト解除し、それらを(通常)ハッシュ結合に変換できます。 –

関連する問題