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一行で実現でき、しかも秒課金なので無駄になりません。まずは小さく始めて、ボトルネックを見ながら賢く拡張していきましょう!
参考リンク
関連記事