チューニングプロセス
概要
パフォーマンスチューニングは、体系的な診断と最適化のための包括的な手法と実装フレームワークを必要とする体系的なプロセスです。診断ツールと分析ツールの強力なサポートにより、Dorisシステムはパフォーマンスの問題を効率的に診断、分析、特定、解決することができます。チューニングの完全な4ステップのプロセスは以下の通りです:

ステップ1: パフォーマンス診断ツールを使用して遅いクエリを特定する
Doris上で動作するビジネスシステムの場合、前述のパフォーマンス診断ツールを使用して遅いSQLクエリを特定します。
- Doris Managerがインストールされている場合、Managerのログページを使用して遅いクエリを視覚的に便利に特定することを推奨します。
- Managerがインストールされていない場合、FEノード上の
fe.audit.logファイルまたはaudit_logシステムTableを直接確認して遅いSQLクエリのリストを取得し、チューニングの優先順位を付けることができます。
ステップ2: スキーマ設計とチューニング
特定の遅いSQLクエリを特定した後、最初の優先事項は、不合理なスキーマ設計によって引き起こされるパフォーマンスの問題を排除するために、ビジネススキーマ設計を検査およびチューニングすることです。
スキーマ設計のチューニングは3つの側面に分けることができます:
- Tableレベルのスキーマ設計チューニング(パーティションとバケット数の調整、フィールド最適化など)
- インデックス設計とチューニング
- Colocate GroupによるJoin最適化などの特定の最適化技術の使用。主な目標は、不合理なスキーマ設計やDorisの既存の最適化機能を十分に活用できないことによって引き起こされるパフォーマンスの問題を排除することです。
詳細なチューニングの例については、プランチューニングのドキュメントを参照してください。
ステップ3: プランチューニング
ビジネススキーマの検査とチューニングを行った後、チューニングの主要なタスクが始まります:プランチューニングと実行チューニングです。上記で述べたように、この段階では、Dorisが提供する様々なレベルのExplainツールを最大限に活用して、遅いSQLクエリの実行プランを体系的に分析し、対象を絞った最適化のための主要な最適化ポイントを特定することが主要なタスクです。
- 単一Tableクエリと分析のシナリオでは、実行プランを分析してパーティションプルーニングが適切に機能しているかを確認し、単一Tableマテリアライズドビューをクエリ高速化に使用することができます。
- 複雑な複数Table分析のシナリオでは、Join Orderを分析してそれが合理的かどうかを判断し、特定のパフォーマンスボトルネックを特定することができます。また、複数Tableマテリアライズドビューを透過的な書き換えによるクエリ高速化に使用することも可能です。不合理なJoin Orderなどの予期しない状況が発生した場合、Join Hintを手動で指定して実行プランを束縛することができます。例えば、Leading hintを使用したJoin Orderの制御、Shuffle HintによるJoin shuffleメソッドの調整、Hintsを使用したコストベース最適化ルールの制御などにより、実行プランのチューニング目標を達成します。
- 特定のシナリオでは、SQL Cacheを使用したクエリの高速化など、Dorisが提供する高度な機能を活用することもできます。
詳細なチューニングの例については、プランチューニングのドキュメントを参照してください。
ステップ4: 実行チューニング
実行チューニング段階では、SQLクエリの実際の実行に基づいてプランチューニングの効果を検証する必要があります。さらに、既存のプランのフレームワーク内で、実行側のボトルネックの分析を続け、どの実行段階が遅いのか、または並列性が最適でないなどの他の一般的な問題を特定します。
複数Table分析クエリを例にとると、Profileを分析して計画されたJoin順序が合理的か、Runtime Filtersが効果的か、並列性が期待に応えているかを確認することができます。さらに、Profileは、遅いI/Oや予期しないネットワーク転送パフォーマンスなど、マシン負荷に関するフィードバックを提供できます。そのような問題を確認および診断する際は、診断とチューニングを支援するシステムレベルのツールが必要です。
詳細なチューニングの例については、実行チューニングのドキュメントを参照してください。
特定のパフォーマンス問題を分析する際は、まずプランを確認してから実行をチューニングすることを推奨します。まずExplainツールを使用して実行プランを確認し、次にProfileツールを使用して実行パフォーマンスを特定およびチューニングします。順序を逆にすると非効率につながり、パフォーマンス問題の迅速な特定を妨げる可能性があります。
まとめ
クエリチューニングは体系的なプロセスであり、Dorisはユーザーに様々な次元のツールを提供して、異なるレベルでのパフォーマンス問題の診断、特定、分析、解決を促進します。これらの診断および分析ツールに慣れ親しみ、合理的なチューニング方法を採用することで、ビジネス担当者やDBAはパフォーマンスボトルネックを迅速かつ効果的に対処し、Dorisの強力なパフォーマンス上の利点をより良く引き出し、ビジネスシナリオにより良く適応してビジネスの実現を可能にすることができます。