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


ここではORACLEデータベースのSQLが急に遅くなる原因と対処方法について紹介してきます。

SQLの実行計画の見方や確認方法については↓で紹介していますので参考にしてください。
>>【ORACLE】SQLの実行計画の見方
>>【ORACLE】SQLの実行計画を取得する方法

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

SQLが突然遅くなる原因を3つ紹介しています。
 1.統計情報が古い
 2.実行計画が最適でない
 3.リソース不足
以上の3つです。

以降でもう少し詳しく紹介していきます。

1.統計情報が古い

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

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

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

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

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

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

2.実行計画が最適ではない

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

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

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

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

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

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

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

3.リソース不足

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

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

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

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

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

まとめ

SQLが突然遅くなる原因を3つ紹介しています。
 1.統計情報が古い
 2.実行計画が最適でない
 3.リソース不足

SQLのチューニングは↓で詳しく紹介していますので参考にしてください。
>>SELECT文のSQLチューニング方法まとめ