AUTO SUSPEND
自動的に一時停止にする設定
停止状態をあらかじめ設定しておくことで、不必要な課金を抑えることができる。
実行しただけの料金が発生するとよく言われているが、実はそれ以外にも料金は発生している。
SUSPENDの時間というのは、クエリから設定した時間はコンピューティングがアイドル状態になるので、その期間も一応料金は発生している。
最低設定時間は60秒となっている
CREATE WAREHOUSE MY_MED_WH
AUTO_SUSPEND=300
不必要なアイドル時間などの料金がなくなるので、一見メリットにも聞こえるかもしれないが
デメリットも存在する
AUTO SUSPENDのデメリット
おそらく、コンピューティングである内部のEC2などはdockerなどの仮想コンテナ技術などが使われているため、一度立ち上げて、その後一時停止をすることでメモリに保存されていたキャッシュが消えることになる。
そのため、同じクエリを何度か行う場合
分析のパフォーマンスが下がることも考えられる。
仮想ウェアハウスは、専有のディスクが存在しない以上、それも考慮しておくことが必要である。
日次や月次レポートなどで、頻繁にアクセスしないBIレポートなどは
キャッシュを気にする必要はあまりないので、SUSPEND期間は短くても良いかもしれない
一方で、
データサイエンティストなどがストリーミングデータを収集して分析するなどと言った
ウェアハウス要件については、分析パフォーマンス向上も加味して
SUSPEND期間を長くすることも検討する必要があると思います。
AUTO RESUME
クエリが送信されると、一時停止したウェアハウスを開始する。
基本的にはこれはAUTOにすることが適していると考える。
CREATE WAREHOUSE MY_MED_WH
AUTO_RESUME=TRUE;
INITIALLY SUSPENDED
これは、ウェアハウスが最初にサスペンド状態で作成されるかどうかを示しています。
ウェアハウスを作成して、CREATE TABLE等しか行わない場合に有効です。
Snowflakeでは メタデータ管理が独立したサービス(Cloud Services Layer)で処理されるため、CREATE TABLEなどのメタデータに関するsqlは、仮想ウェアハウス(コンピュートクレジット)を消費しません。
CREATE WAREHOUSE MY_MED_WH
INITIALLY_SUSPENDED=TRUE;