SQL動作のメカニズムを知る
データベースのパフォーマンスチューニングをする上でSQL動作のメカニズムを理解することは大変重要です。また、SQLを作成する時もパフォーマンスへの影響を考えるようになります。
SQL動作のメカニズム
SQL動作のメカニズムは大きく解析フェーズと実行フェーズで考えることができます。それぞれにパフォーマンスに影響を与える要因が存在します。
解析フェーズ
SQLが発行されると、解析が行われますが、その前に、使用されたことがあるSQLかどうか調べます。同じSQLであれば、メモリ内の共有SQL領域上に存在しいます。存在していれば、わざわざ解析する必要がありませんのでハードパースと言われる解析は行われません。頻繁に解析が行われるようだとパフォーマンス低下の要因になります。
解析フェーズにおけるチューニングポイント
・ハードパースが行われないよう共有プールのサイズを確保し、共有プールにできるだけ留めること
・同一SQLと判定されるようにコーディングする
実行フェーズ
実行フェーズでは、扱うデータがメモリ上のデータベースバッファキャッシュに存在するかどうかを調べます。存在すれば、メモリ上のデータを読むだけなので早いですが、メモリ上に存在しない場合はディスクを読むことになります。れすパフォーマンス低下の要因になります。できるだけメモリ上のデータを扱うような構成にすることが重要です。またSQLは実行計画に基づいて実行されます。データ量の増大など環境の変化によって実行計画が変化してパフォーマンスを悪化させる要因になります
実行フェーズにおけるチューニングポイント
・バッファキャッシュ(メモリ)を増やすことができれば増やす
・バッファキャッシュ上のデータへのヒット率を下げる原因を解明する。例えば無駄なデータにアクセスしているSQLを改善する。
・実行計画の変化がレスポンスが良い方向に変化する場合はいいですが、レスポンスが悪くもなります。この勝手に変化してしまうことを制御するのがSPMという考え方です。SPMを運用することを検討します
One thought on “SQL動作のメカニズム”-
ピンバック: SQLとは – データベース研究室
Comments are closed.