メインコンテンツまでスキップ
に最終更新

パフォーマンスとチューニング

Apache Doris の適応型オプティマイザと Pipeline 実行エンジンにより、多くのワークロードは特別な調整なしで動作します。ただし、本番環境では通常、体系的なパフォーマンスチューニングが必要です。まずチューニングの進め方に沿ってボトルネックを特定し、次にクエリまたはデータ取り込みの具体的なシナリオに合わせて最適化します。実行計画の解釈が難しい場合は、その背景にある仕組みを理解するために最適化技術の仕組みを参照してください。

チューニングの進め方​

クエリ性能​

スキーマとインデックスの最適化

テーブルモデル、パーティションとバケットの分割、キーカラムの設計、インデックス(プレフィックスインデックス、BloomFilter、NGram、転置インデックス)の選択によって、クエリ性能の上限が決まります。

マテリアライズドビュー

同期または非同期のマテリアライズドビューで結果を事前計算し、透過的なクエリ書き換えによって既存の SQL を変更せずに高速化します。

Join の最適化

Colocation Join で Shuffle をなくし、オプティマイザの判断が最適でない場合は Distribute Hint と Leading Hint を使用して Join プランを手動で調整します。

キャッシュによる高速化

SQL Cache、Condition Cache、外部テーブルのファイルキャッシュを組み合わせ、繰り返し実行するクエリ間で結果、フィルター計算、リモートデータを再利用します。

実行時のチューニング

Profile に示された実行時のボトルネックに基づき、並列度、RuntimeFilter の待機時間、データスキュー、CBO ルールを調整します。

高い同時実行数とポイントクエリ

行ストアとショートサーキット実行を使用して、Unique Key テーブルに対する高 QPS の主キー検索を実現します。また、ディメンションテーブルとの Join の代わりに辞書テーブルを使用して、KV クエリを高速化します。

Distinct 件数の集計

正確な重複排除には BITMAP を使用します。1%-2% の誤差を許容できる場合は UV の概算に HLL を使用し、メモリとストレージの負荷を大幅に削減します。

クエリ Profile

Profile で Scan、Exchange、Join、集約などのオペレーターの処理時間の内訳を分析し、クエリで最も時間のかかる段階を素早く特定します。

データ取り込み性能​

最適化技術の仕組み​

ベンチマーク​