第1章 Snowflake AI Data Cloudの特徴とアーキテクチャ(Features & Architecture, 31%)
🎯 この節の学習目標
仮想ウェアハウスのサイズは XS(X-Small)から 6XL まであり、1段階上がるごとにクレジット消費(クレジット/時)が倍になります。同時に、クラスタ内の計算資源も倍になるため、多くのクエリでは処理性能も向上します。
| サイズ | XS | S | M | L | XL | 2XL | 3XL | 4XL | … | 6XL |
|---|---|---|---|---|---|---|---|---|---|---|
| クレジット/時 | 1 | 2 | 4 | 8 | 16 | 32 | 64 | 128 | … | 512 |
サイズの変更(ALTER WAREHOUSE)は即時に反映されます。ただし、実行中のクエリは元のサイズのまま完了し、新しいサイズはキュー(待機)中のクエリと以降の新規クエリから適用されます。
💡 具体例:ウェアハウスの作成とサイズ変更
-- ウェアハウスの作成:自動停止・自動再開を設定
CREATE WAREHOUSE etl_wh
WAREHOUSE_SIZE = 'MEDIUM'
AUTO_SUSPEND = 60 -- 60秒アイドルで自動停止
AUTO_RESUME = TRUE -- クエリが来たら自動再開
INITIALLY_SUSPENDED = TRUE; -- 作成直後は停止状態で待機
-- サイズ変更は即時(実行中クエリは影響なし、キュー中から新サイズ)
ALTER WAREHOUSE etl_wh SET WAREHOUSE_SIZE = 'LARGE';
INITIALLY_SUSPENDED = TRUE を付けると、作成した瞬間からクレジットを消費することなく、最初のクエリが来るまで停止状態で待機させられます。
1-2 で学んだとおり、ウェアハウスは起動している間、稼働時間に応じて課金(秒課金・起動ごとに最低60秒)され、停止中は課金されません。コスト管理の基本は次の2つのパラメータです。
| パラメータ | 働き |
|---|---|
| AUTO_SUSPEND | 指定した秒数の間クエリが実行されない(アイドル)と、ウェアハウスを自動停止する |
| AUTO_RESUME | 停止中のウェアハウスに新しいクエリが届いたとき、自動的に再開する |
| INITIALLY_SUSPENDED | 作成直後のウェアハウスを起動せず、停止状態から始める |
📝 試験のポイント
「使っていない時間の課金を防ぐには AUTO_SUSPEND、ユーザーの手間なく再び使えるようにするには AUTO_RESUME」という組み合わせが基本です。ただし、起動のたびに最低60秒課金が発生するため、AUTO_SUSPEND を極端に短くして起動・停止を頻発させると、かえって割高になったり、後述のキャッシュが失われて性能が落ちたりする点も問われることがあります。
ウェアハウスの性能対策には2つの方向があり、どちらを選ぶべきかの判断が、この節で最も問われやすい論点です。
| スケールアップ | スケールアウト | |
|---|---|---|
| 操作 | ウェアハウスのサイズを上げる(M → L など) | マルチクラスタウェアハウスでクラスタ数を増やす |
| 解決する問題 | 個々のクエリが複雑・重くて遅い(大量データの結合・集計など) | 同時実行クエリが多くてキュー(待ち行列)が発生する |
| 効かない問題 | 同時実行数の不足(1つのクエリが速くなっても待ち行列は残る) | 単発の重いクエリ(クラスタを増やしても1クエリは1クラスタで実行される) |
図:性能問題の切り分け。「1つのクエリの重さ」ならサイズアップ、「本数の多さ」ならマルチクラスタ
📝 試験のポイント
シナリオ問題では「朝の時間帯にユーザーが集中し、クエリがキューに溜まる」→ スケールアウト(マルチクラスタ)、「月次の大規模集計クエリが1本だけ遅い」→ スケールアップ(サイズ変更)が定石です。「同時実行」「キュー」「多数のユーザー」という言葉が出たらスケールアウト、「複雑なクエリ」「大量データの処理」ならスケールアップ、とキーワードで判断できるようにしておきましょう。
マルチクラスタウェアハウスは、同じサイズのクラスタを複数持てるウェアハウスで、Enterprise エディション以上で利用できます(1-2参照)。MIN_CLUSTER_COUNT / MAX_CLUSTER_COUNT の設定によって、2つのモードに分かれます。
| モード | 設定 | 動作 |
|---|---|---|
| Auto-scale モード | MIN < MAX(例:MIN=1, MAX=4) | 負荷に応じてクラスタ数を MIN〜MAX の範囲で自動増減する |
| Maximized モード | MIN = MAX(例:MIN=3, MAX=3) | 起動中は常に MAX 数のクラスタを維持する。常時高負荷が見込まれる場合向け |
Auto-scale モードでは、クラスタを追加する積極性をスケーリングポリシーで制御します。
| ポリシー | クラスタ追加の条件 | 特徴 |
|---|---|---|
| Standard(既定) | クエリのキューイングが発生すると即座にクラスタを追加する | 待ち時間の最小化を優先。性能重視 |
| Economy | 追加したクラスタを6分以上稼働させるだけの負荷が見込まれる場合のみ追加する | クラスタの起動を抑えてクレジットを節約。コスト優先(キューは発生しやすくなる) |
💡 具体例:マルチクラスタウェアハウスの作成
-- Auto-scaleモード:1〜4クラスタで自動増減、コスト優先ポリシー
CREATE WAREHOUSE bi_wh
WAREHOUSE_SIZE = 'MEDIUM'
MIN_CLUSTER_COUNT = 1
MAX_CLUSTER_COUNT = 4
SCALING_POLICY = 'ECONOMY'
AUTO_SUSPEND = 300
AUTO_RESUME = TRUE;
-- Maximizedモード:常に3クラスタを維持(MIN = MAX)
ALTER WAREHOUSE bi_wh SET
MIN_CLUSTER_COUNT = 3
MAX_CLUSTER_COUNT = 3;
ウェアハウスの処理能力を超えるクエリが届くと、あふれた分はキュー(待ち行列)に入り、リソースが空くのを待ちます。キューの多発は「そのウェアハウスに対して同時実行が多すぎる」というサインであり、マルチクラスタ化(スケールアウト)や、ワークロードを別ウェアハウスへ分離する検討材料になります。
また、クエリの実行時間を制御するパラメータとして STATEMENT_TIMEOUT_IN_SECONDS(この秒数を超えたクエリを打ち切る)や STATEMENT_QUEUED_TIMEOUT_IN_SECONDS(キューでの待機がこの秒数を超えたクエリを取り消す)があります。暴走クエリによるクレジットの浪費を防ぐ仕組みとして押さえておきましょう。
✅ この節のまとめ
問1. Mediumサイズ(4クレジット/時)のウェアハウスを2サイズ上げて X-Large にした場合、クレジット/時はいくつになるか。
正解:C
クレジット消費は1段階ごとに倍になるため、M(4)→ L(8)→ XL(16)で、X-Large は16クレジット/時です。Aのように段階ごとに一定量を足す(線形に増える)のではなく、倍々で増える点がポイントです。Bは1段階(L)の値、Dは3段階(2XL)の値です。XS=1 を起点に「XS, S, M, L, XL, … = 1, 2, 4, 8, 16, …」と並べられるようにしておきましょう。
問2. 実行中のクエリがあるウェアハウスのサイズを Large に変更した。このときの動作として正しいものはどれか。
正解:C
サイズ変更は即時に反映されますが、すでに実行中のクエリは元のリソースのまま完了し、新しいサイズはキューで待機中のクエリと以降の新規クエリに適用されます。Aのような強制中断は起きません。Bは「変更自体が保留される」という点が誤りです。Dは誤りで、ALTER WAREHOUSE ... SET WAREHOUSE_SIZE で動的に変更できます。
問3. 業務時間中に多数のアナリストが同時にクエリを実行し、キューイングが多発している。個々のクエリは軽量である。最も適切な対策はどれか。
正解:B
「同時実行が多い・キューが発生・個々のクエリは軽い」はスケールアウト(マルチクラスタ)の典型シナリオです。Aのスケールアップは個々の複雑なクエリを速くする対策で、同時実行数の問題の直接の解決策にはなりません。Cはコスト管理の設定であり、むしろ起動・停止の頻発を招きます。Dはクエリを打ち切るだけで、ユーザーの業務を妨げてしまいます。
問4. マルチクラスタウェアハウスに関する説明として正しいものはどれか(2つ選べ)。
正解:A・C
MIN = MAX なら Maximized モード(常に固定数のクラスタ)、MIN < MAX なら Auto-scale モードです。また、Standard ポリシーはキュー発生で即クラスタを追加する性能重視の既定ポリシーです。Bは Standard と Economy の説明が逆で、Economy は「6分以上稼働させるだけの負荷が見込まれる場合のみ追加する」コスト優先のポリシーです。Dは誤りで、マルチクラスタウェアハウスは Enterprise エディション以上の機能です(エディションについては 1-2 参照)。