製品 & テクノロジー

コストパフォーマンスとTop-Kクエリの高速化に向けた継続的な投資

コストパフォーマンスとTop-Kクエリの高速化に向けた継続的な投資

Snowflake AIデータクラウドは、組織全体のあらゆるタイプのデータ、コンピュート、ユースケース、ペルソナをサポートするエンドツーエンドのプラットフォームです。すべてのユーザーに単一の統合プラットフォームを提供することで、組織がSnowflakeのユースケースを拡大し続けているのは驚くべきことではありません。そのため、一貫して価格性能の高いクエリをお客様に提供するというコミットメントを再確認することが非常に重要です。 

top-kクエリは、最上位または最下位の結果の取得に使用されます。kは取得する結果の数です。2023年6月、長時間実行されるtop-kクエリのパフォーマンスを平均38%、場合によっては最大99%向上させる新しい最適化を開始しました。Snowflakeでは、このようなクエリの重要性と時間的制約を理解しています。私たちはそのようなクエリのパフォーマンスのさらなる向上に取り組み、2024年3月から2024年5月にかけて、お客様のクエリのパフォーマンスが平均で12.5%向上し、一部のクエリは最大99.8%向上しました。

メカニズムについて

このブログ記事で説明したように、top-k機能はランタイム情報、つまり、top-k要素の現在のコンテンツを使用して、全体的な結果に寄与しないことが保証されるマイクロパーティションをスキップします。入出力操作(I/O)が大幅に削減され、クエリのパフォーマンスが大幅に向上しました。top-kに最近追加された最適化により、I/O数のさらなる削減に成功し、クエリ性能が大幅に向上しました。

アーキテクチャの違い:最初のバージョンでは、パーティションごとに1つのI/Oが必要でしたが、現在は、top-kはSnowflakeの高度なメタデータレイヤーを使用して関連するメタデータを直接クエリに埋め込むため、パーティションをスキップするかどうかを決定する際に追加のI/Oは必要ありません。このメリットは、特に大きなテーブルで顕著です。タイムスタンプ列でクラスタ化された 100万のパーティションのテーブルがあるとしましょうテーブルに対してORDER BYタイムスタンプLIMIT 10のクエリを実行します。以前は 少なくとも100万のI/Oと スキャンが必要なパーティションのI/Oが必要でした実際にロードする必要のあるパーティションに必要なI/Oは わずかです 

アルゴリズムの視点:アルゴリズムの観点から、パーティションをスマートな順序で処理し、I/Oをさらに減らす方法を導入しました。Snowflakeは クエリの実行を開始する前に パーティションのメタデータを調べ 与えられたパーティションの内容が 最終結果に至る可能性が高いかどうかを判断しますSnowflakeは、まずそれらのパーティションの処理を開始します。これは、クエリの開始後に見られる最初の top-k要素がすでに最大/最小の行の一部であり、これも最終結果になる可能性が高いことを意味します。これに2023年6月のブログ記事で説明したスキップ技術を組み合わせることで、ランダムな順序でスキャンするパーティションよりもさらに多くのパーティションをスキップすることができます。

この2つのアイデアを組み合わせることで、非常に大きなテーブルであっても、少数のパーティションを処理するだけで、クラスター化されたテーブルに対するクエリに答えることができます。 

その他の改善点としては、top-kクエリ全体の約10%を占めるORDER BYキーのSTRING/VARCHAR/BINARYデータ型をサポートできるようになったことが挙げられます。また、top-kが適用可能な場合、クエリ概要のスキャンパーティション数が減ることも確認しました。

top-kの改善の影響:お客様にとっての意味

この新しい最適化により、パフォーマンスが大幅に向上し、コンピュートコストが削減され、大量のデータセットから迅速にインサイトを得ることができます。プライベートプレビュー中、多くのORDER BY LIMITのお客様のクエリが数分から数秒に短縮されることが確認されました。以下の例では、影響を受けたクエリが99.9%も高速化されています。この機能のロールアウト中に、影響を受けるクエリの平均実行時間が12.5%短縮されることが確認されました。

クエリを4つのグループに分けると、ランタイムに応じて、実行時間の長いクエリの方が実行時間の短いクエリよりも相対的な速度が大きいことが分かります。

絶対削減率を見ると、多くのクエリでランタイムが少量しか削減されず、小さな共有では1秒以上短縮されていることが分かります。これは、Snowflake上の多くのtop-kクエリがすでに非常に高速に実行されており、絶対的な削減の余地はわずかであるため、予想どおりです。

開始方法

幸いなことに変更を加える必要はありません。クエリオプティマイザーは 恩恵を受けるクエリに 自動的にこの機能強化を適用し パフォーマンスを向上させます業界をリードするサイバーセキュリティプラットフォームであるSygniaがどのようにElasticsearchからSnowflakeに移行し、top-k機能を使用してより高速なクエリ結果を顧客に提供したかをご紹介します。

結論

Snowflakeでは、コアデータベースエンジンの高速化に焦点を当てて、パフォーマンスの強化に継続的に取り組んでいます。私たちは、毎週のリリースを通じて、このようなパフォーマンスの向上を実現していることに誇りを感じています。このブログ記事では、最近リリースされた、広く適用可能で、非常に影響力のある、すべてのお客様が利用できるパフォーマンス最適化について取り上げました。
Snowflakeがパフォーマンスの改善をどのように評価し、優先順位付けするかについては、こちらのSnowflakeパフォーマンス指数の詳細をお読みください。年別および月別の主なパフォーマンス改善のリストについては、Snowflakeドキュメントを参照してください。

Subscribe to our blog newsletter

Get the best, coolest and latest delivered to your inbox each week

Start your 30-DayFree Trial

Try Snowflake free for 30 days and experience the AI Data Cloud that helps eliminate the complexity, cost and constraints inherent with other solutions.