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

Snowflake

Snowflakeを使い始めると、「クエリが遅いな…」「同時実行が多くて待ち行列ができている…」といった悩みに必ず出会います。そんなときの解決策が スケールアップスケールアウト の2つ。名前は似ていますが役割はまったく違います。この記事では、フレンドリーな例えを交えながら、それぞれの違いと使い分け方を初心者向けに解説します。

※ ウェアハウスそのものの基本については Snowflakeウェアハウスとは?サイズと使い分けを初心者向けに解説 を先に読むとより理解しやすいです。

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

ざっくり言うと…

  • スケールアップ:ウェアハウスのサイズを大きくする(XS → S → M → L…)
  • スケールアウト:同じサイズのウェアハウスを複数台に増やす(クラスター数を増やす)

レストランで例えるなら、スケールアップは「シェフを名人級にパワーアップ!」、スケールアウトは「同じ腕前のシェフをもう一人雇う!」というイメージ。一品の料理を早く作りたいのか、多くのお客さんを同時にさばきたいのかで選び方が変わるんです。

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

ウェアハウスのサイズを上げると、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エディションの違いと選び方を初心者向けに解説 も参考になります。

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

状況 選ぶべき方法
1本のクエリが遅い スケールアップ
同時に走るクエリが多くキューが発生 スケールアウト
大量データのバッチ処理を短時間で スケールアップ
BIツールから多人数が同時アクセス スケールアウト

迷ったら「遅い=アップ混んでる=アウト」と覚えればOKです。

まとめ

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

参考リンク

関連記事

タイトルとURLをコピーしました