データ基盤

Snowflakeとは|取り合いが0%なら16人で16.0倍、5%あるだけで9.1倍に落ちる

何を共有している構成なのか計算資源を増やすとどう効くのか読む量は何で決まるのか

取り合いがなければ、担当を16人に増やすと16.0倍速くなります。

5%が取り合うだけで9.1倍に落ちます。分ける構成の値打ちは、この差にあります。

この記事の要点

  • 取り合い0%で16.0倍
  • 5%で9.1倍
  • 20%で4.0倍
  • 読む量は項目数に比例

置き場所は1つ、計算は分ける

データを配り直さずに、計算の側だけを分けられます。分けた側どうしは干渉しません。

Snowflakeの構成は、公式が2つの側面から説明しています。

ディスクを共有する構造と同じく、Snowflakeは、platformのすべての計算の節から到達できる、永続化されたデータのための中央の格納庫を使うという記述です。

計算の側は分けます。公式は仮想倉庫とは、Snowflakeで計算資源をひとまとめにしたものであると定めています。

この形が可能にすること

  1. 計算だけ増やせる。データを配り直さない
  2. 用途ごとに分けられる。集計と取り込みが別のまとまり
  3. 互いに干渉しない。同じデータを見ても取り合わない
  4. 使わないときは止められる。置き場所は残る

3番目が次の節で測る対象です。取り合いがあるかないかで、増やす効き目が変わります

同じ実体に集まる形との違い

書き込みを1つの実体が担う形では、そこが上限になります。その構成はAmazon Auroraの記事で扱いました。

分ける形では、読みのまとまりを増やしても書き込み側に影響しません。代わりに、まとまりごとに費用が立ちます。

出典Snowflake 公式ドキュメント「Key concepts and architecture」2026-08-18 確認
Similar to shared-disk architectures, Snowflake uses a central data repository for persisted data that is accessible from all compute nodes in the platform.
原文Snowflake 公式ドキュメント「Key concepts and architecture」 この内容の有効期限2027-02-18

取り合いが0%なら16人で16.0倍、5%あるだけで9.1倍に落ちる

並列に効かせるには、取り合う部分をなくす必要があります。少しでも残ると効きが削れます。

Snowflakeの処理は分散して行われます。公式はSnowflakeは大規模並列処理の計算のまとまりを使って問い合わせを処理し、まとまりの中の各節はデータ集合の一部を手元に保持すると説明しています。

分散が効くかどうかは、取り合う部分が残っているかで決まります。その分を数えました。

取り合う割合を変える

text
処理 4000件。1件 2ms。同じ行を取り合う分は順番待ちになる
取り合う割合を変えて、担当を増やしたときの短縮を見る

取り合う割合          1人        2人        4人        8人       16人  16人での短縮
0%                 8.00秒     4.00秒     2.00秒     1.00秒     0.50秒         16.0倍
5%                 8.00秒     4.20秒     2.30秒     1.35秒     0.88秒          9.1倍
20%                8.00秒     4.80秒     3.20秒     2.40秒     2.00秒          4.0倍
50%                8.00秒     6.00秒     5.00秒     4.50秒     4.25秒          1.9倍

1行目が、取り合いのない場合です。16人で16.0倍、まったく損がありません。

5%が取り合うと9.1倍です。5%という小さな割合で、効きが43%削られます。

取り合いが生まれる場所

計算のまとまりを分ければ、まとまりの間では取り合いが起きません。同じ置き場所を読むだけだからです。

残るのはまとまりの中と、書き込みが同じ対象に当たる場合です。ここが1行目と2行目の差になります。

だから分ける単位は、取り合う処理どうしを別のまとまりに置くように決めます。取り込みと集計を分けるのが典型です。

5%の取り合いで、16倍が9.1倍まで落ちる。

単位: 倍取り合い0%16倍5%9.1倍20%4倍50%1.9倍処理4000件・1件2msでの計算。取り合う分は同時に1人しか進めないものとした。
図1 ── 取り合う割合と、16人での短縮
出典Snowflake 公式ドキュメント「Key concepts and architecture」2026-08-18 確認
Snowflake processes queries using massively parallel processing (MPP) compute clusters, where each node in the cluster stores a portion of the entire data set locally.
原文Snowflake 公式ドキュメント「Key concepts and architecture」 この内容の有効期限2027-02-18

読む量は使う項目の数で決まる

列ごとに並べ直されているので、使う項目だけを読めます。全項目を選ぶとその利点が消えます。

Snowflakeは、取り込んだデータを並べ直します。公式はデータがSnowflakeの表に読み込まれると、Snowflakeはそのデータを、内部で最適化され、圧縮された、列ごとの形式へ組み替えると説明しています。

列ごとなので、使う項目だけを読めます。どれだけの差になるかを数えました。

使う項目の数を変える

text
表 200,000行・1行あたり 12項目(1項目 4バイト)
集計に使う項目の数を変えて、読む量を見る

使う項目  行ごとに持つ形  列ごとに持つ形  比
1個                   9.2MB           0.8MB   12.0倍
2個                   9.2MB           1.5MB    6.0倍
3個                   9.2MB           2.3MB    4.0倍
6個                   9.2MB           4.6MB    2.0倍
12個                  9.2MB           9.2MB    1.0倍

1項目なら12.0倍の差です。12項目すべてを使えば1.0倍になります。

公式が挙げている圧縮の分は、この計測に入っていません。実際にはさらに小さくなります

2つの費用を分けて見る

この構成では、費用が2つに分かれます。置いておく量と、計算を動かした時間です。

読む量は、後者に効きます。読む量が減れば処理が早く終わり、動かす時間が短くなります

前者は、置いた量そのものです。読み方を変えても減りません。減らすには古いものを消すことになります。

同じ分かれ方はBigQueryの記事でも扱いました。読む量と置く量は別勘定です。

余談 この計測での注意

取り合いの計算は単純な形に置いています。取り合う分は同時に1人しか進めないものとし、待ちの詳細は入れていません。読む量も項目の数からの計算で、圧縮の効きは含めていません。1項目4バイトという値も置いたものです。ここで見せているのは、少しの取り合いが並列の効きを大きく削ること、読む量が使う項目の数で決まることの2つです。

出典Snowflake 公式ドキュメント「Key concepts and architecture」2026-08-18 確認
When data is loaded into a Snowflake table, Snowflake reorganizes that data into its internally optimized, compressed, columnar format.
原文Snowflake 公式ドキュメント「Key concepts and architecture」 この内容の有効期限2027-02-18

よくある質問

Snowflakeは何を共有していますか
中央のデータの置き場所です。すべての計算の節から到達できると説明されています。
計算資源を増やすとどう効きますか
取り合いがなければ素直に効きます。この計測では16人で16.0倍でした。
取り合いがあるとどうなりますか
5%あるだけで9.1倍まで落ちました。20%なら4.0倍です。
読む量は何で決まりますか
使う項目の数です。列ごとに並べ直して保管されるため、使う分だけ読めます。

まとめ

  • 置き場所を共有する
  • 計算はまとまりごとに分ける
  • 取り合いがなければ素直に効く
  • 読む量は項目の数で決まる

今日から始められること

  1. 同時に走る処理が取り合っていないか調べる
  2. 計算のまとまりを分ける単位を決める
  3. よく使う集計が触る項目を数える
  4. 全項目を選ぶ問い合わせを探す

実務で組んだSnowflakeのワークフローには、値段が付きます

同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。

出品の仕組みを見る