SQLチューニングとは、SQLの実行計画、実行監視情報、システム構成、システム負荷など、多方面の要素を総合的に分析し、SQLの実行戦略を調整することで、リソース利用を最大化することです。
SQLチューニングの方法は、一般的に単一SQLのチューニングとシステムSQLのチューニングに分けられます。
単一SQLのチューニング
単一SQLのチューニングでは、最適化の対象はチューニング対象のSQL実行そのものであり、一般的なチューニング目標には、そのSQLの実行時間やランタイムのリソース消費などが含まれます。一般的なチューニング手法には、アクセスパスの調整、実行順序の変更、論理的な書き換えなどがあります。
単一SQLの実行計画に対する性能チューニングは、単一テーブルアクセスと複数テーブルアクセスの2つのシナリオに分けられます。
シナリオ |
SQLチューニングのポイント |
|---|---|
| 単一テーブルアクセス |
|
| 複数テーブルアクセス | 単一テーブルのSQLチューニングに加え、以下の複数テーブル間の結合問題にも注意する必要があります:
|
システムSQLのチューニング
システムSQLのチューニングの目的は、システム全体のスループットやシステム利用率などを向上させることです。システムSQLのチューニングプロセスでは、しばしば複数のSQLの実行計画を組み合わせ、現在のシステム負荷特性を総合的に分析する必要があり、主にホットスポット行の競合やBuffer Cacheのヒット率など、グローバルなチューニングポイントに注目します。
スループットに対する性能チューニングでは、一定のリソース(CPU、I/O、ネットワークなど)条件下で、データベースシステムのリクエスト処理量を最大化することを主な考慮事項とします。主に以下の点に注目します:
メインメソッド |
説明 |
|---|---|
| 遅延SQLの最適化 | 具体的な遅延SQLを特定した後、個々のSQLに対してパフォーマンスチューニングを行います。例:特定期間内に実行時間が上位N位のリクエストを照会する。 |
| SQLリクエストトラフィックとリソースの均等化 | 例:クラスタのSQLリクエストトラフィックが均等かどうかを確認する を参照してください。 均等化に影響を与える主な要因は以下の通りです:
|
| サブプランのRPCリクエストトラフィックとリソースの均等化 | 例:分散サブプランのRPC実行数が均等かどうかを確認する を参照してください。 サブプランのリクエストが均等であるかどうかに影響を与える主な要因は以下の通りです:
|