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