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

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