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実行数が均等かどうかを確認するを参照してください。 サブプランのリクエストが均等であるかどうかに影響を与える主な要因は以下の通りです:
|