【SQL】データベースチューニングをしてパフォーマンスを向上させる
なぜデータベースをチューニングするのか
※【22日間で学ぶ】SQL文、分析関数、テーブル設計、SQLチューニングまでMySQLで覚えるSQL実践講座を参考
データベースは運用を続けていくとデータ量は増加していき、パフォーマンスが落ちていく。
アプリケーションサーバの場合はパフォーマンスが遅くなったとしてもスケールアウトが容易であるが、データベースサーバの場合はスケールアウトは難しい。
オンライン処理では、データベースサーバのパフォーマンスが落ちてページの表示に時間がかかるとユーザは不満を感じる。
(だいたい3秒以上経つと遅いなと感じるとか)
オンライン処理全体で3秒をパフォーマンスの基準とすると、データベースサーバでは1秒以下のレスポンスが求められる。
オプティマイザと実行計画
データベースのパフォーマンスを向上させるには、SQLの実行の流れとオプティマイザを知る必要がある。
SQLの実行の流れは以下の図の通りである。
構文チェックとは、SQLの文法に誤りがないかをチェックする。
意味チェックとは、SQLに記述されているテーブルや列がデータベースに存在するかチェックする
共有プールとは、過去に実行したSQLを保存しておく場所であり、既に保存されていたらそのまま実行する。保存されていなかったら最適化へ進む。
最適化とは、実行計画を複数作成する。
実行計画の作成とは、実際に実行するプログラムを決定する。
実行とは、SQLを実行する。
実行計画とオプティマイザとは
実行方法とは、インデックス、カラムやデータ量、レコード件数などの情報をもとに割り出されたデータ探索の手段。
オプティマイザとは、複数の実行計画の中で統計的に最も効率的な実行計画を指す。この際の統計情報はインデックスやカラム、レコード件数などから割り出される。例えば、東京ー大阪間を移動するのに新幹線、バス、飛行機などの手段が実行計画にあたる。その中で、料金が安い、移動時間が短い、乗り換えが少ないなどを考慮した最適な移動方法がオプティマイザにあたる。
参考