こんにちは!日比です!
みなさんは「Snowflakeのウェアハウスのコストってどう見積もったらいいの?」と
疑問を持ったことはないでしょうか?
今回はそんな疑問にお答えしていきたいと思います。
本記事でわかること
- ウェアハウスの考え方
ウェアハウスの考え方
まず、ウェアハウスの基本についてみていきましょう。
ウェアハウスは、SQLを処理する仮想マシンのことです。
最近サーバーレスウェアハウスもでてきていますが、
今回は標準ウェアハウスについて言及します。
クラスタウェアハウス
ウェアハウスを複数たばねたものを、マルチクラスタといいます。
1つだけのウェアハウスは、シングルクラスタといいます。
デフォルトはシングルクラスタで作成されます。
どちらで作成すべきかは、下記用途を参考にして選択します。

ウェアハウスのサイズ
ウェアハウスにはサイズがあります。
XS~6XLまでのサイズが用意されております。
一般的にサイズを上げると、SQLの処理時間の短縮が期待できますが、
時間あたりのコスト(※1)は倍になります。
※1…Snowflakeではクレジットと表現されています。

ウェアハウスの同時実行
1つのウェアハウスで同時に実行できるSQLは、MAX_CONCURRENCY_LEVELで定義されます。
スーパーのレジ台数(下図の●)をイメージしていただくと理解しやすいかもしれません。
1つのウェアハウスにつき、標準的なSQLが8個処理できる目安になっています。
また、1つのSQLは同じウェアハウス内で処理され、ウェアハウスをまたぐことはありません。
マルチクラスタになると、そのクラスタ数だけ増えます。
例えば3つのマルチクラスタであれば、8×3=24個のSQLが処理できる目安となります。

パフォーマンスの考え方
サイズアップは、レジ台数を変えず、
レジ担当者(レジ打ちの人、商品スキャンの人など)を増やすイメージです。
マルチクラスタ化は、レジ担当者を変えず、レジ台数を増やすイメージです。
そのため、サイズアップかマルチクラスタにするかは下記を参考に選択します。

ウェアハウスの最適サイズ
ウェアハウスのコストは下記になります。
ウェアハウスのコスト = ウェアハウスクレジット × 起動時間(h)
ここで重要なのは、1つサイズアップしたらクレジット単価は2倍になりますが、
もし、処理時間が1/2になればトータルコストは変わらないというところです。
下図を例とします。Mまでは処理時間が1/2になっており効果的ですが、
Lになると処理時間が1/2に及ばず、効果的ではありません。
そのためこの処理の最適サイズはMであるといえます。
このように実際にサイズアップと、所持時間の短縮を確認して最適サイズを決定します。

まとめ
いかがでしたでしょうか。
ウェアハウスの考え方はご理解いただけたでしょうか?
本記事がみなさまの参考になれば幸いです。
おわり。


コメント