チューニングプロセス
概要
パフォーマンスチューニングは、体系的な診断と最適化のための包括的な方法論と実装フレームワークを必要とする体系的なプロセスです。診断ツールと分析ツールの強力なサポートにより、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の既存の最適化機能を十分に活用できなかったことによるパフォーマンス問題を排除することです。
詳細なチューニング例については、Plan Tuningのドキュメントを参照してください。
ステップ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が提供する高度な機能を活用することもできます。
詳細なチューニング例については、Plan Tuningのドキュメントを参照してください。
ステップ4:実行チューニング
実行チューニング段階では、SQLクエリの実際の実行に基づいてプランチューニングの有効性を検証する必要があります。さらに、既存のプランのフレームワーク内で、実行側のボトルネックの分析を継続し、どの実行段階が遅いか、または最適でない並列性などの他の一般的な問題を特定します。
マルチTable分析クエリを例に取ると、Profileを分析して、計画されたJoin順序が合理的か、Runtime Filtersが効果的か、並列性が期待に沿っているかをチェックできます。さらに、Profileは遅いI/Oや予期しないネットワーク送信パフォーマンスなどのマシン負荷についてのフィードバックを提供できます。このような問題を確認し診断する際は、診断とチューニングを支援するシステムレベルツールが必要です。
詳細なチューニング例については、Execution Tuningのドキュメントを参照してください。
特定のパフォーマンス問題を分析する際は、まずプランをチェックしてから実行をチューニングすることが推奨されます。まずExplainツールを使用して実行プランを確認し、次にProfileツールを使用して実行パフォーマンスを特定しチューニングします。順序を逆にすると非効率になり、パフォーマンス問題の迅速な特定を阻害する可能性があります。
まとめ
クエリチューニングは体系的なプロセスであり、Dorisはユーザーに様々な次元のツールを提供して、さまざまなレベルでのパフォーマンス問題の診断、特定、分析、解決を促進します。これらの診断・分析ツールに精通し、合理的なチューニング方法を採用することで、ビジネス担当者やDBAはパフォーマンスボトルネックを迅速かつ効果的に対処し、Dorisの強力なパフォーマンス上の利点をより良く引き出し、ビジネス支援のためのビジネスシナリオによりよく適応することができます。