PLSQL内のループ処理速度の低下
896439Oct 27 2011 — edited Nov 9 2011初めて投稿します。
現在、旧サーバーから、新サーバーへのオラクルの移行を行っています。
テーブルの構成はそのままで、export importで構築してあります。
新サーバで動作確認をしていたところ、PLSQLの処理が異様に遅くなっていることに気がつきました。
旧環境では、2時間以内で終わる処理が新環境ですと6時間程度かかります。
サーバーの性能に関しては、新サーバーの方が、高性能のため、新サーバーの処理速度が向上すると
思っていたのですが、実際には3倍程度時間がかかるようになってしまい困惑しております。
新環境のPLSQL内のSQLを一つ一つ、実行計画を確認したのですが旧環境と同等でした。
ただ、気になる点として、PLSQL内で同一処理をループしているのですが、ループ開始直後は、新環境の処理速度は高速(0.003秒/1件)なのですが、
件数を重ねるごとに処理速度が低下(0.2秒/1件)していました。旧環境では、処理速度の著しい低下は見受けられませんでした。
※処理速度の調査は同一データ・条件で実施しております。
オラクルのバージョンにつきましては以下の通りです。
旧環境:11.1.0.7.0
新環境:11.2.0.2.0
PLSQL内の処理は、
①メインテーブルを検索しカーソルに設定(約30万件)
②カーソルループ処理
③ループ内で、サブテーブル(5)検索→検索したデータを編集→登録用テーブル(1)に登録処理を行っています。
ここで質問なのですが、ループするごとに処理速度が低下する原因はどのようなことが考えられますでしょうか?
ご存知の方はご教授ください。よろしくお願いいたします。
※新環境、旧環境のバージョンが誤っていましたので修正しました。
Edited by: user10610537 on 2011/10/27 0:09
Edited by: user10610537 on 2011/10/27 0:11