Skip to main content
QUICK REVIEW

[論文レビュー] Flow-Loss: Learning Cardinality Estimates That Matter

Parimarjan Negi, Ryan Marcus|arXiv (Cornell University)|Jan 13, 2021
Machine Learning and Algorithms参考文献 47被引用数 10
ひとこと要約

この論文は、全体の正確性ではなく、クエリ最適化の意思決定に最も影響を与える推定を優先する、新しい微分可能損失関数であるFlow-Lossを導入する。計画グラフ上でクエリ最適化をフロー路線問題としてモデル化し、計画コスト勾配を逆伝播することで、推定の正確性がQ-Errorを下回る場合でも、実際のクエリパフォーマンスを向上させる。特に、学習時に見られなかったクエリテンプレートにおいて、最大1.5倍の高速化を達成する。

ABSTRACT

Previous approaches to learned cardinality estimation have focused on improving average estimation error, but not all estimates matter equally. Since learned models inevitably make mistakes, the goal should be to improve the estimates that make the biggest difference to an optimizer. We introduce a new loss function, Flow-Loss, that explicitly optimizes for better query plans by approximating the optimizer's cost model and dynamic programming search algorithm with analytical functions. At the heart of Flow-Loss is a reduction of query optimization to a flow routing problem on a certain plan graph in which paths correspond to different query plans. To evaluate our approach, we introduce the Cardinality Estimation Benchmark, which contains the ground truth cardinalities for sub-plans of over 16K queries from 21 templates with up to 15 joins. We show that across different architectures and databases, a model trained with Flow-Loss improves the cost of plans (using the PostgreSQL cost model) and query runtimes despite having worse estimation accuracy than a model trained with Q-Error. When the test set queries closely match the training queries, both models improve performance significantly over PostgreSQL and are close to the optimal performance (using true cardinalities). However, the Q-Error trained model degrades significantly when evaluated on queries that are slightly different (e.g., similar but not identical query templates), while the Flow-Loss trained model generalizes better to such situations. For example, the Flow-Loss model achieves up to 1.5x better runtimes on unseen templates compared to the Q-Error model, despite leveraging the same model architecture and training data.

研究の動機と目的

  • 既存の学習済み基数推定器が平均推定誤差(例:Q-Error)を最適化するという限界に対処すること。これは、実際のクエリパフォーマンスと一致しない。
  • クエリ最適化の意思決定に最も影響を与える基数推定を特定し、それらを優先的に改善することで、計画品質を向上させること。
  • 最適化のコストモデルと動的計画法の探索の微分可能で滑らかな近似を構築し、勾配ベースの学習を可能にすること。
  • Flow-Lossが、標準的なQ-Error学習と比較して、学習時に見られなかったクエリテンプレートへの一般化性能を向上させるかどうかを評価すること。
  • Flow-Lossで訓練されたモデルが、容量が制限された状況でも、関係のないまたはノイズの多い推定に過学習を避け、より良い一般化を達成するかどうかを示すこと。

提案手法

  • 計画グラフ上でクエリ最適化を最短経路問題として形式化し、経路が代替のクエリ計画を表す。
  • 動的計画法の最適化とコストモデルを、解析的で微分可能な関数で近似し、計画コストの基数推定値に関する勾配を計算する。
  • 計画コスト勾配を逆伝播することで、最も重要な推定値を改善するための微分可能代替損失としてFlow-Lossを導出する。
  • 効率的な勾配計算のため、電流フローの定式化から得られる構造を活用し、行列逆行列(B(Y)⁻¹)を用いる。
  • 実世界のワークロード上で、Flow-Lossを用いてニューラルネットワークモデル(FCNN、MSCN)を訓練し、Q-ErrorおよびPostgreSQLのデフォルトと比較する。
  • 16,000件以上のクエリ、21のテンプレート、最大15のジョインを含む、真値基数が与えられた新しいベンチマーク(CEB)を用いて結果を検証する。

実験結果

リサーチクエスチョン

  • RQ1Flow-Lossを用いて計画コストを最小化するように訓練した学習済み基数推定器は、推定の正確性を最適化するQ-Errorで訓練したものよりも、実際のクエリパフォーマンスで優れているか?
  • RQ2モデル容量が制限された状況でも、Flow-Lossは、学習時に見られなかったクエリテンプレートへの一般化性能を向上させるか?
  • RQ3Flow-Lossは、特徴量の変更やデータ分布のシフトに対して、Q-Errorと比較してどれほど頑健か?
  • RQ4Flow-Lossで訓練されたモデルは、学習データがノイズ混じりまたは部分的に不正確であっても、パフォーマンスの改善を維持できるか?
  • RQ5Flow-Lossは、計画選択に影響を与えない基数推定に過学習をどれだけ軽減するか?

主な発見

  • Flow-Lossで訓練されたモデルは、Q-Errorで訓練されたモデルよりも平均Q-Errorが悪いにもかかわらず、クエリ計画コスト(PPC)と実行時間を向上させる。
  • 学習時に見られなかったクエリテンプレートでは、Flow-LossモデルがQ-Errorモデルよりも最大1.5倍の平均クエリ実行時間を短縮する。これは、同じモデルアーキテクチャと学習データを使用しても同様に達成される。
  • Flow-Lossモデルは一般化性能に優れる:特徴量のコンponentを削除しても、Flow-Lossモデルは性能を維持するが、Q-ErrorモデルはPPCで最大2倍劣化する。
  • PostgreSQLのヒューリスティック特徴量(例:基数とコストの推定)は一般化に不可欠である。それらを削除すると両モデルに悪影響が及ぶが、Flow-Lossモデルはより頑健である。
  • Flow-Lossモデルは分布シフトに対しても優れた頑健性を示す:わずかに異なるワークロードでも、Q-Errorモデルとは異なり、顕著なパフォーマンス低下を回避する。一方、Q-ErrorモデルはPostgreSQLより最大1.5倍遅くなることがある。
  • Flow-Lossのトレーニングオーバーヘッドは、Q-Errorに比べ3~5倍高いが、推論は高速(数ミリ秒)であり、クエリ最適化に実用的である。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。