Snowflakeのスケールアップとスケールアウトの違いと選び方を解説

Snowflakeのスケールアップとスケールアウトの違いと選び方を解説 Snowflake
この記事をシェアする𝕏B!FacebookLINEPocket
Snowflakeを使い始めると、「クエリが遅いな…」「同時実行が多くて待ち行列ができている…」といった悩みに必ず出会います。そんなときの解決策が スケールアップスケールアウト の2つ。名前は似ていますが役割はまったく違います。この記事では、フレンドリーな例えを交えながら、それぞれの違いと使い分け方を初心者向けに解説します。 ※ ウェアハウスそのものの基本については Snowflakeウェアハウスとは?サイズと使い分けを初心者向けに解説 を先に読むとより理解しやすいです。

スケールアップとスケールアウトって何?

ざっくり言うと…
  • スケールアップ:ウェアハウスのサイズを大きくする(XS → S → M → L…)
  • スケールアウト:同じサイズのウェアハウスを複数台に増やす(クラスター数を増やす)
レストランで例えるなら、スケールアップは「シェフを名人級にパワーアップ!」、スケールアウトは「同じ腕前のシェフをもう一人雇う!」というイメージ。一品の料理を早く作りたいのか、多くのお客さんを同時にさばきたいのかで選び方が変わるんです。
Snowflakeのスケールアップとスケールアウトの違いをレストランのシェフに例えて示す概念図

スケールアップ:重いクエリを速くしたいとき

ウェアハウスのサイズを上げると、CPU・メモリ・ローカルSSDが倍々で増えていきます。1本の重いクエリ(大量データの集計や複雑なJOIN)を速く処理したいときに有効です。
-- ウェアハウスのサイズをLに変更(スケールアップ)
ALTER WAREHOUSE my_wh SET WAREHOUSE_SIZE = 'LARGE';
ただしサイズを上げるとクレジット消費も倍になります。「いつも遅いから常にXLにする」ではなく、必要なときだけ上げるのが鉄則です。

スケールアウト:同時実行ユーザーが多いとき

朝9時に分析チーム10人が一斉にクエリを投げる…そんなとき1台のウェアハウスでは順番待ち(キュー)が発生します。これを解決するのが マルチクラスターウェアハウス(Enterprise Edition以上で利用可)。混雑時に自動で台数を増やし、空いてきたら減らしてくれます。
-- 1〜3台の間で自動スケールアウト
ALTER WAREHOUSE my_wh SET
  MIN_CLUSTER_COUNT = 1
  MAX_CLUSTER_COUNT = 3
  SCALING_POLICY = 'STANDARD';
エディションによる機能差は Snowflakeエディションの違いと選び方を初心者向けに解説 も参考になります。
Snowflakeのスケールアウトでマルチクラスターウェアハウスが同時実行クエリをさばく仕組みを示すフロー図

どっちを選ぶ?判断のポイント

状況 選ぶべき方法
1本のクエリが遅い スケールアップ
同時に走るクエリが多くキューが発生 スケールアウト
大量データのバッチ処理を短時間で スケールアップ
BIツールから多人数が同時アクセス スケールアウト
迷ったら「遅い=アップ混んでる=アウト」と覚えればOKです。

まとめ

スケールアップは「ハイパワー1台で重い処理を高速化」、スケールアウトは「複数台で同時実行をさばく」。Snowflakeはどちらもボタン一つ・SQL一行で実現でき、しかも秒課金なので無駄になりません。まずは小さく始めて、ボトルネックを見ながら賢く拡張していきましょう!

参考リンク

関連記事

この記事をシェアする𝕏B!FacebookLINEPocket