Skip to main content
QUICK REVIEW

[論文レビュー] Bao: Learning to Steer Query Optimizers

Ryan Marcus, Parimarjan Negi|arXiv (Cornell University)|Apr 8, 2020
Data Stream Mining Techniques参考文献 59被引用数 16
ひとこと要約

Baoは強化学習に基づくシステムであり、従来のクエリ最適化ツールを拡張するために、特定の結合演算子を無効化するなどの粗い粒度のヒントを学習することで、クエリの実行パフォーマンスを向上させる。文脈的マルチアームバンディット枠組み内において、木型畳み込みニューラルネットワークとトンプソンサンプリングを組み合わせることで、Baoは約1時間で高速に学習を達成し、中央値および尾尾遅延を低減し、ワークロード、データ、スキーマの変更に対してもパフォーマンスを維持する。これは、オープンソースおよび商業用の最適化ツールを上回る性能を発揮する。

ABSTRACT

Query optimization remains one of the most challenging problems in data management systems. Recent efforts to apply machine learning techniques to query optimization challenges have been promising, but have shown few practical gains due to substantive training overhead, inability to adapt to changes, and poor tail performance. Motivated by these difficulties and drawing upon a long history of research in multi-armed bandits, we introduce Bao (the BAndit Optimizer). Bao takes advantage of the wisdom built into existing query optimizers by providing per-query optimization hints. Bao combines modern tree convolutional neural networks with Thompson sampling, a decades-old and well-studied reinforcement learning algorithm. As a result, Bao automatically learns from its mistakes and adapts to changes in query workloads, data, and schema. Experimentally, we demonstrate that Bao can quickly (an order of magnitude faster than previous approaches) learn strategies that improve end-to-end query execution performance, including tail latency. In cloud environments, we show that Bao can offer both reduced costs and better performance compared with a sophisticated commercial system.

研究の動機と目的

  • 既存の学習型クエリ最適化ツールの限界、すなわち高いトレーニングオーバーヘッド、データ/スキーマの変更に対する脆弱性、および悪い尾尾性能を解消すること。
  • 従来のクエリ最適化ツールを置き換えずに、エンドツーエンドのクエリ実行パフォーマンス、特に尾尾遅延を向上させること。
  • 効率的で段階的な学習により、動的なワークロード、データ、スキーマの変更に迅速に適応できること。
  • マルチテントクラウド環境向けに、CPU時間、I/Oなど、カスタマイズ可能な最適化目標を提供できること。
  • 既存の最適化ツールの上に機械学習の強化を統合することにより、数十年にわたる手作業最適化の知見を損なわず、維持すること。

提案手法

  • Baoは、各ヒントセットを「アーム」とみなし、予測されたパフォーマンスに基づいてクエリプランを選択することで、クエリヒント選択を文脈的マルチアームバンディット問題として定式化する。
  • クエリ論理プランの埋め込みと構造的特徴の抽出に、木型畳み込みニューラルネットワークを用い、文脈表現を生成する。
  • 探索と活用のバランスを保つためにトンプソンサンプリングを採用し、低レグレットで効率的な学習を実現する。
  • 各インcommingクエリに対して、Baoはヒントセットを選択し、下位の最適化ツールを介してクエリを実行し、報酬(実行時間、I/O回数など)を観測してポリシーを更新する。
  • システムは、クエリ構造から最適なヒントセットへのマッピングを学習するポリシーを獲得し、各クエリに対して最良のヒントセットとのレグレットを最小化する。
  • トレーニングは効率的であり、Baoは実世界のワークロードで約1時間のトレーニングで顕著なパフォーマンス向上を達成する。

実験結果

リサーチクエスチョン

  • RQ1学習型システムは、下位の最適化ツールを置き換えることなく、最小限のトレーニング時間でクエリ最適化ツールのパフォーマンスを向上させることができるか?
  • RQ2このようなシステムは、データ、スキーマ、またはクエリワークロードの動的変更に対してもパフォーマンスの向上を維持できるか?
  • RQ3特にトレーニングデータが少ない状況でも、中央値および尾尾遅延を低減できるか?
  • RQ4CPU時間、I/Oなど、異なるパフォーマンス指標を最適化できるようにカスタマイズ可能か?
  • RQ5一般的に学習型最適化ツールに見られる深刻なパフォーマンス劣化(catastrophic regressions)を回避できるか?

主な発見

  • Baoは1時間のトレーニング後、PostgreSQLを下回る中央値のレグレットを達成し、IMDbおよびStackワークロードの両方でパフォーマンス向上を実現した。
  • 尾尾性能において、Baoは30秒を超えるCPU時間を要するプランを一切選択しないが、PostgreSQLは一部のケースで720秒を超えるプランを選択した。
  • ジョインオーダーベンチマークでは、Baoは113件のクエリのうち3件でのレグレッションを示したが、いずれも3秒未満であり、10件のクエリでは20秒以上もパフォーマンスが向上した。
  • CPU時間とI/Oの両指標において、BaoはPostgreSQLよりも中央値のレグレットが低く、トレーニングに使用した指標に関わらず同様の結果を示した。
  • CPU時間の最小化を目的にトレーニングした場合、Baoは温暖キャッシュ状況下でも、PostgreSQLよりも顕著に低い中央値および尾尾レグレットを達成した。
  • Baoの最適化目標のカスタマイズ能力により、マルチテントクラウド環境におけるコスト削減とパフォーマンス向上が可能になった。

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

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

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

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