はじめに:なぜ「ウェアハウス」を理解する必要があるの?
Snowflakeを使い始めて最初につまずきやすいのが、
「ウェアハウス(仮想ウェアハウス)」という言葉です。「データウェアハウス」と名前が似ていてややこしいですが、Snowflakeで言う
ウェアハウス は、データの保管庫ではなく
SQLを実行するための”エンジン(計算機)” のことを指します。
つまり、クエリを動かすにもデータをロードするにも、ウェアハウスがないと何も始まりません。さらに、サイズの選び方ひとつで
処理速度もコストも数倍変わる ので、ここをしっかり押さえると Snowflake の使い方がぐっと上手になります!
仮想ウェアハウスの基本概念
Snowflakeは
3層アーキテクチャ を採用しており、「ストレージ層(データ置き場)」と「コンピュート層(計算エンジン)」が完全に分離しています。仮想ウェアハウスはこの
コンピュート層 にあたり、必要なときだけ起動して使う”クラウドのレンタルサーバー”のようなイメージです。
大きなポイントは次の3つ。
- 使った時間だけ課金:起動中の秒数に応じてクレジットを消費(最低60秒)
- サイズを自由に変えられる:重い処理のときだけ大きくして、終わったら戻せる
- 複数同時起動OK:BI用・データロード用・分析用など用途別に分けられる
T-Shirtサイズ:XSからは6XLまで
ウェアハウスのサイズは、洋服のように
XS, S, M, L, XL, 2XL, 3XL, 4XL, 5XL, 6XL という単位で指定します。1サイズ上がるごとに、内部のサーバー台数が
2倍 になり、消費クレジット(時間あたりのコスト)も
2倍 になります。
例えば XS は1時間あたり1クレジット、S は2、M は4…と倍増していきます。「サイズが2倍 = 速度も2倍」になりやすいので、
同じクエリならサイズを上げても合計コストはほぼ変わらない ケースが多いのも特徴です。
ウェアハウスを作ってみよう(SQL例)
実際に
Snowsight のワークシートで作ってみます。
-- XSサイズのウェアハウスを作成
CREATE WAREHOUSE my_wh
WAREHOUSE_SIZE = 'XSMALL'
AUTO_SUSPEND = 60 -- 60秒アイドルで自動停止
AUTO_RESUME = TRUE -- クエリが来たら自動再開
INITIALLY_SUSPENDED = TRUE;
-- 使うときに指定
USE WAREHOUSE my_wh;
-- 重い処理の前だけサイズを上げる
ALTER WAREHOUSE my_wh SET WAREHOUSE_SIZE = 'LARGE';
-- 処理が終わったら戻す
ALTER WAREHOUSE my_wh SET WAREHOUSE_SIZE = 'XSMALL';
AUTO_SUSPEND と
AUTO_RESUME は必ず設定しておきましょう。これだけで「使っていない時間に課金され続ける」事故をかなり防げます。
サイズの使い分け早見表
- XS〜S:学習用、開発、軽いダッシュボード、少量のデータロード
- M〜L:本番のBI用途、中規模ETL、数千万行レベルの集計
- XL以上:大規模バッチ、数億行の結合、機械学習向けの特徴量生成
迷ったら
まずXSかSで試して、遅ければ1段階ずつ上げる のがコツです。最初から大きくしてしまうと、無駄なクレジットを消費しがちです。
用途別にウェアハウスを分けるのがプロのやり方
Snowflakeでは「ロード用」「BI用」「アドホック分析用」などウェアハウスを
用途別に複数作る のが定石です。こうすることで、夜間バッチが昼間のダッシュボードを遅くする…といった干渉を防げます。
注意点:お金がかかる場所
ストレージ料金とは別に、
ウェアハウスの起動時間=コンピュートコスト がかかります。
トライアルアカウント の $400 クレジットも、巨大なウェアハウスを付けっぱなしにするとあっという間に消えるので注意!AUTO_SUSPEND を短め(60〜300秒)に設定するのがおすすめです。
まとめ
仮想ウェアハウスは Snowflake における
計算のエンジン。サイズはT-Shirt表記で、上げるほど速く・コストも倍々になります。まずは小さく始めて、必要に応じて拡大、用途別に分割──この基本を押さえれば、コストも性能もコントロールできるようになります!
参考リンク
関連記事