目次
今回は
みなさん、こんにちはMaxGaugeを販売しております日本エクセムの製品担当です。
今回はSQLの実行計画に関するMaxGaugeの機能などを紹介します。
実行計画の変化よるトラブルとなるケースも多いことからMaxGaugeには実行計画に関する調査する機能があります。
「実行計画の確認」「実行計画による処理時間の差」「実行計画が変化したときにアラート検知」など、
WEB UIから操作することで簡単に調査、設定することができます。
突然SQLが遅くなりました
「昨日まで3分で終了していたSQLが今日は突然遅くなり10分でした」
このようなトラブルはデータベースを運用していると何度か経験されていると思います。
データベースやSQLなど変更していない、、データベースの負荷は高くなかった、、『なぜ?』
いろいろと調査してみると「実行計画が変化したことによりSQLが遅くなりました」の原因にたどり着くことがあります。
MaxGaugeならSQLの実行状況を詳細に記録していることから、処理遅延が実行計画の変化が原因であることに短時間でたどり着くことができます。
MaxGaugeでSQLの実行計画を確認
MaxGaugeが収集するSQLの実行情報には実行計画を識別する “Plan hash value” も収集しているので
「どの実行計画で実行したか?」を確認することができます。
実行計画は「実行中のSQL」「過去に実行したSQL」のどちらも確認することができます。
実行中のSQL
MaxGaugeのリアルタイムモニタでSQLを実行中のセッションリストが表示されます。
確認したいSQLを実行中のセッションを選択して「セッション詳細」の画面から実行計画を確認することができます。
確認方法
①リアルタイムモニタのアクティブセッションの一覧から確認したいSQLを実行しているセッションの行をダブルクリックします
②対象セッションの「セッション詳細」ウィンドウが表示されます、右下の「実行計画」タブより実行しているSQLの実行計画を確認できます。
“Plan hash value” は 「SQL Plan Hash」より値を確認することができます。
過去に実行したSQL
MaxGaugeのパフォーマンスアナライザから過去に実行されたSQLの実行計画を確認することができます。
確認方法
①パフォーマンスアナライザ > 推移分析 > 性能トレンド の順に画面を遷移して調査の対象となる日時で検索します。
表示されたアクティブセッションのリストから確認したいSQLを実行しているセッションを右クリック、メニューから「SQL詳細」をクリックします。
②「SQL詳細」ウィンドウが表示されます。SQLの実行統計を示す画面で実行計画別に各種統計値が表示されます。
A :実行計画別の統計値が表示されます
B :平均実行時間や実行計画別の実行回数がグラフで表示されます
C :時間別のSQL実行統計値が表示されます
③「SQL詳細」ウィンドウにある [実行計画比較] ボタンをクリックすると「実行計画比較」
ウィンドウに複数の実行計画が表示され差がある行をハイライト表示します
確認ポイント |
---|
|
実行計画の変化により処理時間が遅くなったSQLを確認
MaxGaugeは実行計画の変化によりSQLの実行時間が n倍 変化したSQLを表示する「実行計画履歴」機能があります。
この機能を使用することで実行計画の変化により遅くなったSQLを探すことができます。
実行計画履歴の画面
画像の画面例では前日のSQL実行時間と比較して3倍遅くなったSQLを画面下のSQLリストに表示しています。
(同一SQLで実行計画が異なるSQLを対象に実行時間を比較)
実行計画が変化したらアラート
MaxGaugeは登録した実行計画以外の実行計画でSQLが実行されたらアラート検知する機能があります。
実行計画の登録
アクティブセッションリストやSQLが表示されるリストを右クリックメニューから「SQL Plan Hash追加」をクリックするとアラート検知対象のSQLとして登録されます。
登録したSQL Plan Hash はホワイトリストとして登録され登録外のSQL Plan Hash でSQLが実行されるとアラートとして検知します。
さいごに
今回はMaxGaugeでSQL実行計画の機能を中心に紹介しました。
MaxGaugeなら実行計画の変化を簡単に見つけることが可能で調査時間の短縮に役立つと考えております。
非効率な実行計画でSQLが実行されていましたらSQLチューニングなどの対処が必要になります。
日本エクセムではSQLチューニングに関する情報を公開していますので読んでみてください。
👉https://www.ex-em.co.jp/blog_category/oracle-sql-tuning/
いかがでしたでしょうか?
次回の記事もお楽しみにしていてください♪