目次

開く

    こんにちは。ES/1 Shelty担当の川越です。
    2023年8月にリリース予定のSQL分析機能についてご紹介いたします。

     

    ES/1 SheltyのSQL分析機能では、ざっくりと以下のことができるようになります。

     

    • 処理時間の長いSQLの抽出
    • 処理時間の長いSQLを実行していたトランザクションの調査
    • リソース使用状況が変化したタイミングで実行されていたSQLの確認

     

    それでは、どのように分析を行うのかさっそくご紹介いたします。

     

     

    SQL一覧画面

    システムダッシュボードから「アプリケーション→SQL一覧」メニューを選択すると、以下のSQL一覧画面が表示されます。

     

     

    es1sheltytips#10_1
    es1sheltytips#10_1

    SQL一覧画面

     

     

    この画面では、表示されている期間にアプリケーションサーバーから発行されたSQLを一覧表示しています。

    「平均SQL実行時間」「総実行時間」等の項目でソート表示できるので、レスポンスに影響を与えていたSQLを判別できるようになります。

     

    チューニング対象となるSQLを抽出する際は、「負荷率」の降順でソートしていただくことをおすすめします。

    「負荷率」はSQLを処理していた時間のうち、当該SQLの実行時間が占めていた割合を指します。算出方法は下記の通りです。

     

     負荷率%=当該SQLの総SQL実行時間 / 全SQLの総SQL実行時 * 100

     

    負荷率の降順でソートすることにより、チューニング対象のSQLが見つけやすくなります。
    例えば、平均SQL実行時間や最大SQL実行時間が長いSQLがあったとしても、そのSQLがあまり発行されていないSQLの場合は、システム全体のレスポンスには大きな影響はありません。
    しかし、単発での処理時間がそれほど長くない場合も、頻繁に発行されるSQLであれば、累積処理時間が長くなり、トランザクションレスポンスに大きな影響を及ぼす場合があります。

     

    負荷率を基準にソートすると合計処理時間の割合が高いSQLを抽出できるので、システム全体として、最もレスポンスに影響を及ぼすSQLを見つけることができます。

     

    SQL詳細画面

    SQL一覧画面でSQLをクリックすると、SQL詳細画面に遷移します。
    こちらの画面から当該SQLが発行されていたトランザクションを確認することができます。

     

     

    es1sheltytips#10_2
    es1sheltytips#10_2

    SQL詳細画面

     

     

    SQL詳細画面では、選択したSQLが発行されたトランザクションを一覧表示します。
    トランザクションIDをクリックするとメソッドツリー画面に遷移し、レスポンス全体に占めるSQL処理時間を確認できます。

     

    また、SQL一覧やSQL詳細画面では、SQLは最大128文字までの表示となりますが、メソッドツリー画面ではSQLの全文を確認可能です。

    加えて、Java Agentのデータ収集設定でバインド変数を表示する設定を有効化している環境では、バインド変数の値についても表示されます。

     

     

    es1sheltytips#10_3
    es1sheltytips#10_3

    メソッドツリー画面でのバインド変数確認

     

     

    リソース使用状況からのSQL分析機能への遷移

    もう一つの分析方法としては、リソース使用状況に変化があった場合に実行しているSQLを確認するケースです。

    DBサーバーのリソース使用状況が変化した時間帯に実行していたSQLを辿ることができます。

     

     

    image-png-Jun-05-2023-05-37-15-8259-AM
    image-png-Jun-05-2023-05-37-15-8259-AM

    サーバ詳細からSQL一覧への遷移

     

     

    サーバー詳細画面にて、例えばDB時間が急増している時間帯で「システムのSQL一覧へ」ボタンをクリックし、同じ時間帯に実行していたSQLを確認します。

    この際、対象時刻はできるだけ事象が発生している時間帯にピンポイントで合わせておくのがおすすめです。

    問題があった時間帯に実行していたSQLに絞り込んで表示するため、DB負荷状況に影響を及ぼしているSQLを特定するのに役立ちます。

     

    なお、注意が必要な点として以下がございます。

     

    • リンク元のDBサーバーに対してのSQLのみではなく、システム全体のトランザクションで発行されたSQLを掲載します。
      そのため複数のDBサーバーが存在するシステムでは異なるDBサーバーで発行されたSQLを含んでいます。

    • 本画面はアプリケーションサーバーが実行しているトランザクションから発行されたSQLを表示しています。
      そのため、その他の経由で実行されているSQLは表示対象外となります。

     

    使用条件

    SQL分析機能をご利用いただける環境は以下の通りです。
    該当する環境では、新たな設定等を実施することなく本機能をご利用いただけます。

     

    • Application Agent(Java AgentおよびDotnet Agent)にてアプリケーションデータを収集している環境
    • Shelty Managerの環境がV2.4.0以上

     

    SQL分析機能は2023年8月リリース予定です。
    本機能をSQLチューニングにお役立ていただければ幸いです。

     

     


     

     

    コメント一覧

    執筆者

    C.K. 

    営業技術本部 技術統括部 顧客サポート部 

    関連記事