【Snowflake】Snowflakeのコスト改善 ~ AUTO_SUSPEND ~

◾️はじめに

https://dk521123.hatenablog.com/entry/2023/06/13/000000

の続き。

SnowflakeのAUTO_SUSPENDってのを知ったのでメモ。

目次

【1】AUTO_SUSPEND
 1)公式ドキュメント
【2】Snowflakeのコスト改善案:AUTO_SUSPENDを下げる
【3】AUTO_SUSPENDを下げ過ぎることによるデメリット
【4】確認および設定方法
 0)確認方法 - SHOW WAREHOUSES
 1)設定方法 - CREATE WAREHOUSE
 2)変更方法 - ALTER WAREHOUSE

【1】AUTO_SUSPEND

* ウェアハウスが自動的に停止するまでの時間[秒]

1)公式ドキュメント

https://docs.snowflake.com/ja/sql-reference/sql/alter-warehouse
AUTO_SUSPEND = { num | NULL }

ウェアハウスが自動的に中断されるまでの
非アクティブの秒数を指定します。

有効な値

任意の整数 0 以上、または NULL:

・ウェアハウスを中断するバックグラウンド処理は
 約30秒ごとに実行されるため、このプロパティの設定は
 ウェアハウスの中断を正確に制御するためのものではありません。

・30未満の値、または30の倍数でない値を設定することは可能ですが、
 ウェアハウスの中断のポーリング間隔が30秒であるため、
 期待した動作にならない可能性があります。

・0 または NULL 値を設定すると、
 ウェアハウスが一時停止されることはなくなります。

デフォルト

600
(ウェアハウスは、10分の非アクティブ後に自動的に一時停止します)

重要

クエリのワークロードが継続的に実行されるウェアハウスを必要としない限り、
 AUTO_SUSPEND の値を 0 または NULL に設定することは推奨しません。
これにより、特に大規模なウェアハウスでは、クレジット(および対応する料金)
が大幅に消費されることに注意してください。
詳細については、 ウェアハウスに関する考慮事項 をご参照ください。

【2】Snowflakeのコスト改善案:AUTO_SUSPENDを下げる

* デフォルトは600秒(=10分)なので、
 その時間分のコンピューティングコストがかかる
 => よって、短ければ、コスト削減できる

https://docs.snowflake.com/ja/user-guide/warehouses-considerations#automating-warehouse-suspension

自動一時停止を有効にする場合は、Snowflakeが1秒あたりの請求を使用するため、
低い値(5または10分以下)に設定することをお勧めします。
これは、使用されていないときにウェアハウスが稼働しないように
(そしてクレジットを消費しないように)します。

【3】AUTO_SUSPENDを下げ過ぎることによるデメリット

* 仮想ウェアハウスがサスペンドされているときに、新しいクエリが実行されると 
 自動的に再開するが、再開には数秒から数十秒かかることがある
 => 頻繁にサスペンドとリジュームが起こると、
  そのたびに待ち時間が発生し、ジョブ全体の実行時間が長くなる
 => ウェアハウスがサスペンドされずに、そのまま起動していたら、
  この「数秒から数十秒かかる」がなくなる

【4】確認および設定方法

0)確認方法 - SHOW WAREHOUSES

SHOW WAREHOUSES LIKE '%{your-warehouse}%';

1)設定方法 - CREATE WAREHOUSE

https://docs.snowflake.com/ja/sql-reference/sql/create-warehouse

CREATE WAREHOUSE IF NOT EXISTS {your-warehouse}
WITH AUTO_SUSPEND=1;

2)変更方法 - ALTER WAREHOUSE

https://docs.snowflake.com/ja/sql-reference/sql/alter-warehouse

ALTER WAREHOUSE {your-warehouse}
SET AUTO_SUSPEND=1;

参考文献

https://note.com/tokyobang/n/n024d76ea21b9
https://zenn.dev/kommy339/articles/2e9c4a27484712

関連記事

Snowflake ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2021/11/02/130111
Snowflake ~ 入門編 / Hello world
https://dk521123.hatenablog.com/entry/2021/11/22/212520
Snowflakeのコスト改善 ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2023/06/13/000000
Snowflake ~ ウェアハウス / Warehouse ~
https://dk521123.hatenablog.com/entry/2022/12/04/000000