はじめに:使ってない時間にもお金がかかる?
Snowflakeの
仮想ウェアハウス(クエリを実行するためのコンピュートエンジン)は、起動している間ずっとクレジットを消費します。つまり「クエリを投げていなくても、立ち上げっぱなしだと課金される」というわけです。
そこで活躍するのが、今回紹介する
AUTO_SUSPEND(自動サスペンド) と
AUTO_RESUME(自動再開)。この2つを使いこなせば、無駄なクレジットを使わずに済み、結果としてコストをグッと抑えられます。料金の全体像が気になる方は、先に
Snowflakeの料金体系をやさしく解説を読むとイメージしやすいですよ。
自動サスペンドと自動再開ってなに?
AUTO_SUSPEND:アイドル状態で自動停止
AUTO_SUSPEND は「ウェアハウスがクエリを処理しないアイドル状態が一定時間続いたら、自動でサスペンド(停止)する」機能です。停止中はクレジットを消費しないので、付けっぱなし課金から守ってくれます。
AUTO_RESUME:必要になったら自動起動
AUTO_RESUME は反対に、「サスペンド中のウェアハウスに対してクエリが投げられたら自動で再開する」機能。利用者は「動いてるかな?」を気にせずクエリを書けて、しかも使う瞬間だけ課金されるという理想的な動きになります。
SQLでの設定方法
新しくウェアハウスを作るときも、既存のものを変えるときもワンライナーでOKです。
-- 新規作成: 60秒アイドルで自動停止、クエリが来たら自動再開
CREATE WAREHOUSE my_wh
WITH WAREHOUSE_SIZE = 'XSMALL'
AUTO_SUSPEND = 60
AUTO_RESUME = TRUE;
-- 既存ウェアハウスの変更
ALTER WAREHOUSE my_wh SET
AUTO_SUSPEND = 120
AUTO_RESUME = TRUE;
AUTO_SUSPENDの単位は
秒。最小は60秒で、これ未満にするとキャッシュが消えやすくなりすぎるので注意です。ウェアハウスの基本については
Snowflakeウェアハウスとは?サイズと使い分けもどうぞ。
Snowsightでの設定手順
GUI派のあなたには
Snowsightからの操作も簡単です。
- 左メニューから「Admin」→「Warehouses」を開く
- 対象のウェアハウスを選び「Edit」をクリック
- 「Auto Suspend」のドロップダウンで停止までの時間を選択
- 「Auto Resume」のトグルをONにして保存
節約のコツと注意点
- AUTO_SUSPENDの値はワークロード次第:対話型の分析なら60〜120秒、断続的にクエリが来るBIダッシュボードなら300〜600秒など、用途に合わせて調整しましょう。
- キャッシュとのトレードオフ:サスペンドするとウェアハウスのローカルキャッシュ(SSD)が消えます。短すぎる設定は逆にクエリが遅くなることもあるので、よく使うBI用は少し長めがおすすめ。
- 再開には数秒かかる:自動再開時は通常数秒以内に立ち上がりますが、初回クエリだけ少し待ち時間が発生する点は覚えておきましょう。
まとめ
AUTO_SUSPENDとAUTO_RESUMEは、Snowflakeで真っ先に設定すべき
コスト最適化の基本機能です。「使うときだけ課金」という従量課金の良さを最大限に引き出してくれます。新しくウェアハウスを作ったら必ずチェック、と覚えておきましょう!
参考リンク
関連記事