Home » database » SQL分析

SQL分析

STATSPACKを使用してパフォーマンスに影響を与えていると思われるSQLを分析します

STATSPACKにはSQLに関する情報が6つあります

SQL XXX by XXXの形式で表示されます

 

1.SQL ordered by CPU

SQLがCPU負荷の高い順に表示されます

処理負荷が高いことを示しているので、まずはチューニングの対象と考えます

無駄な処理をしている可能性が高いので、処理負荷が高い原因を分析します

LOOP処理やソート処理(JOINによる暗黙ソートなど)を疑います

 

2.SQL ordered by Elapsed

SQLがElapse Timeの長い順に表示されます

処理時間が長いということはリソースを長く、多く消費していることを示しているので、まずはチューニングの対象と考えます

ソート処理(JOINによる暗黙ソート等を含む)やファイルI/Oが多いか、ラッチ競合は発生していないかを疑います

 

3.SQL ordered by Gets

SQLがバッファ読込(所謂LOGICAL READです)の多い順に表示されます

バッファ取得が多いということはラッチ競合の原因となる可能性がありますので、ラッチ競合が出ている場合はチューニング対象と考えます

Segments by Logical Readsのオブジェクト(テーブルやインデックス)とSQLがそれらのオブジェクトを使用しているようなら要注意です

 

4.SQL ordered by Reads

SQLがDISK(物理)読込(所謂PHYSICAL READ)の多い順に表示されます

過剰なI/OはCBLCラッチ競合の遠因となる可能性が大きいので、ラッチ競合が出ている場合はチューニング対象と考えます

Segments by Physical Readsのオブジェクト(テーブルやインデックス)とSQLがそれらのオブジェクトを使用しているようなら要注意です

 

5.SQL ordered by Executions

SQLが実行回数の多い順に表示されます

頻繁に実行されるSQLは、全体的なパフォーマンスに最も大きな影響を与えるため、最初からチューニングの対象と考えます

実行回数が妥当かを分析します

特に、CPU負荷が高いとか、Elapse Timeが長いところにも出現しているSQLはチューニングの対象です

実行回数が多いので、少しのチューニングで効果が大きい場合もあります(塵も積もれば何とやらです)

 

6.SQL ordered by Parse Calls

SQLが解析回数の多い順に表示されます

ハードパースの時間やライブラリキャッシュの使用など無駄なリソース使用の原因となりますので、他のチューニングより優先度は低くなりますがチューニング対象と考えておきます

SQLの構文の問題の可能性がありますので、コーディング規約やバインド変数化やPL/SQL化などSQLの作りに問題はないかを分析します

 

STATSPACKのSQL order by XXXの項目値のまとめとチューニングのポイント

2 thoughts on “SQL分析

Comments are closed.