SQLが突然遅くなる原因と対応方法

ORACLE SQLが急に遅くなることがあります。

これにはいくつかの原因が存在します。
まずは慌てず、落ち着いて原因調査を行い対応していきましょう。

統計情報が古い

ORACLEがSQLを実行するとき、表の統計情報を元にどのようにしてデータを取得するか、実行計画という計画を作成します。

表の中のデータが増えたり減ったり、月末処理などで大量の更新がかかりデータの内容が大きく変わってしまったりすると表の統計情報が古くなっていることがあります。

そのとき、最適な実行計画が立てられず、SQLが突然遅くなることがあります。

そういった場合はSQLで参照している表の統計情報を取得してください。
そしてSQLを再度実行し直してください。実行中のSQLはどうにもできませんのでご注意ください。

ORACLEのテーブルやインデックスの「統計情報」とは

ORACLE表の統計情報の取得方法




実行計画が最適ではない

表の統計情報が最新の場合でも実行計画が最適ではない場合があります。

複雑なSQL、副問合せやネストが多いものはORACLEオプティマイザが作成した実行計画が最適でない場合があります。
ORACLEでも百発百中で最適な実行計画は立てられません。

こんなときは実行計画を最適なものに変更する必要があります。

SQLのチューニングをオススメします。

ただ、すぐにチューニングが出来ない場合にはORACLEチューニングアドバイザを使ってプロファイルを作ることや過去の実行計画を使うように設定するなど対処する必要があります。

OracleSQLに実装すべき3つのSQLヒント

Oracleのパフォーマンスを左右する待機イベント

リソース不足

本稼働後から数年経つとデータ量も増えていきます。

データの削除が適切に行われデータ量が一定に保たれているシステムをこれまで見たことはないです。データ量が増えることにより、特にメモリ(SGAPGA)の不足が発生します。

これによりSQLの実行が待ち行列を作り、突然遅くなることがあります。他にも、共有プールのサイズが枯渇していて、ハードパースが行われる回数が増えているなども考えられます。

この辺までくると、アプリをサクッと修正して完了とはいきません。きちんとチューニングの知識を学んだ上で、リソースの増強を考えて行く必要があります。

SGA」や「PGA」に基礎的な内容を紹介していますので参考にしてください。

SQLが突然遅くなる原因と対応方法” に対して1件のコメントがあります。

この投稿はコメントできません。