はじめに
snowflakeの仮想ウェアハウスについてご存知でしょうか?
仮想ウェアハウスとは、クエリやデータロードなどDMLの操作をする際に必要な計算エンジン(CPUとメモリのかたまり)です。
データを保存する場所ではなく、クエリを処理するための計算専用のリソースです。
snowflakeはデータを保存する場所と計算する場所が分離しているのが特徴です。
- データ保存→クラウドストレージ(S3など)
- 計算処理→仮想ウェアハウス
仮想ウェアハウスの概要
サイズを選べる
ウェアハウスのサイズはsnowflakeで利用できるコンピューティングリソースの量を指定します。
snowflakeは次のコンピューティングリソースをサポートしています。
| サイズ | クレジット / 時間 | クレジット / 秒 |
| XS | 1 | 0.0003 |
| S | 2 | 0.0006 |
| M | 4 | 0.0011 |
| L | 8 | 0.0022 |
| XL | 16 | 0.0044 |
| 2XL | 32 | 0.0089 |
| 3XL | 64 | 0.0178 |
| 4XL | 128 | 0.0356 |
| 5XL | 256 | 0.0711 |
| 6XL | 512 | 0.1422 |
請求への影響
ウェアハウスのサイズを1サイズあげることによって、ウェアハウスを実行する各満1時間に対して、クレジット使用状況は2倍になります。
Snowflakeは1秒あたりの請求となります。また、ウェアハウスは起動するたびに最小60秒の起動時間がかかることに注意をしてください。
データロードへの影響
ウェアハウスのサイズをあげたからといってデータロードの時間が早くなるとは限りません。
データロードのパフォーマンスはウェアハウスのサイズではなく分割するファイル数とファイルサイズが影響します。つまり、大量の分割数のファイルを一括ロードする場合は大きいサイズを使用するべきですが、それ以外の場合はXSなどの小さいサイズのウェアハウスを利用することが推奨されています。
クエリ処理への影響
ウェアハウスのサイズは、特に大規模で複雑なクエリの場合、実行時間に影響を与える可能性があります。これは、ウェアハウスが大きいほど、クエリの処理に使用できるコンピューティングリソースが増えるためです。
ウェアハウスのサイズはいつでも変更することが可能です。追加のリソースは、すでに実行されているクエリには影響しませんが、完全にプロビジョニングされると、キューに入れられたクエリまたは新しく送信されたクエリで使用できます。
Auto SuspensionとAuto Resumption
デフォルトでは、Auto SuspensionとAuto Resumptionは有効になっています。Snowflakeは、指定された期間アクティブでない場合、ウェアハウスを自動的に一時停止します。
まとめ
snowflakeのウェアハウスはTシャツサイズで表現することができて、必要なリソース量に応じて自由にサイズを変更することができます。
サイズはデータロードには影響を与えることが少ないが、クエリ処理への影響は大きいです。
ウェアハウスは起動時間とサイズによって請求が決まる。Auto SuspensionとAuto Resumptionを設定することで無駄な請求を防ぐことが可能です。
今後もsnowflakeの自己学習も兼ねて、まとめていきたいと思います。
