【SQL】パフォーマンスをあげることを考える ~チューニング手順~


手順1:問題箇所の確認

■ 状況確認
 * 何の処理を行っているのか
 * 処理にどのくらい時間がかかっているのか
■ 環境確認
 * システム形態
 * アプリケーションの種類

手順2:「リソースの問題」「DBの問題」かを切り分ける

■ システム・リソースの確認
 * CPU負荷
 * 過度のスワップ処理の発生
 * ネットワーク負荷

 →「システム・リソースに問題がない」「特定のDBプロセスがシステムリソースを使用してる」のが明確な場合は、
    DB(SQL文含む)の問題だと切り分けられる。

手順3:目標の設定

→目標を定めないと終わりのない作業になってしまうため
 (早ければ早い程いいに決まってるが、落し所がないと、どこまでやったいいか分からなくなる)

手順4:SQLの詳細情報の取得

 * 実際の処理の間に、SQLの詳細情報の取得

※パフォーマンスは環境により結果が変わってくるので、以下も併せて取得しておくといい
 * DBの稼働状況
 * DBサーバのシステム・リソース情報

手順5~7:チューニング作業(情報分析, チューニング実施)

 * 手順4で得られた情報を分析
 * SQLチューニングを実施

■ 主な原因

http://www.atmarkit.co.jp/fdb/rensai/orasql01/orasql01_2.html
【1】 ハードウェアのチューニング
 => CPUやメモリ、ディスク、ネットワークなど、OSリソースの最適化

【2】 アプリケーションのチューニング
 => プログラムロジックやアプリケーション・サーバの設定などのアプリケーションの最適化

【3】 オブジェクトのチューニング
 => 表や索引といったデータベース・オブジェクトの設定や設計の変更など

【4】 SQLチューニング

【1】ハードウェアのチューニング

なんてことはない...
 * CPUを早いものに変える
 * メモリ増設
 * ネットを早いものに変える

【2】 アプリケーションのチューニング

 * ストアド・プロシージャを導入する

【3】 オブジェクトのチューニング

 * インデックスを設定する

【4】 SQLチューニング

以下を参照のこと
http://blogs.yahoo.co.jp/dk521123/17141399.html

関連記事

パフォーマンスをあげることを考える ~チューニング手順~

http://blogs.yahoo.co.jp/dk521123/28478871.html

SQL Server のパフォーマンスをあげることを考える

http://blogs.yahoo.co.jp/dk521123/28530905.html