Snowflakeでウェアハウスサイズを変更するとロード時間は変わるの? 実際に試してみた

2021.07.09

こんにちは!エノカワです。

Snowflakeでは、データのロードやクエリなどの操作を行う際、ウェアハウスを作成して使用します。

ウェアハウスには、X-Small, Small, Medium などのサイズがあり、
サイズによって使用可能なコンピューティングリソースが決まっています。

大規模なデータのロード操作または複雑な計算クエリが必要とされる場合、
より大きなウェアハウスが必要になります。

今回は、ウェアハウスを変更するとデータのロード時間がどう変わるのか実際に試してみました。

概要

ウェアハウスサイズごとにデータのロード時間を測定します。

ウェアハウス

  • 使用するサイズは、X-Small, Small, Medium, Large, X-Large の5パターンとする
  • マルチクラスターウェアハウスは使用しない

データ

  • サンプルデータSNOWFLAKE_SAMPLE_DATA.TPCH_SF100を使用する
    • 15億件のレコードを持つデータセット

測定方法

  1. ORDERSテーブルと同じ構造のテーブルを作成する
  2. ORDERSテーブルのデータをステージのファイルにアンロードする
  3. 作成したテーブルにアンロードしたファイルをロードし、その処理時間を測定する
    • 測定にはQUERY_HISTORYテーブル関数のEXECUTION_TIME(実行時間)を使用する
    • 3回実行し、その平均値を測定値とする

ファイルサイズとファイル数

ドキュメントに以下の記載があります。

ウェアハウスのサイズを大きくしても、データロードのパフォーマンスが常に向上するわけでは ありません 。データロードのパフォーマンスは、ウェアハウスのサイズよりも、ロードされるファイルの数(および各ファイルのサイズ)の影響を受けます。

ウェアハウスの概要 — Snowflake Documentation

上記を踏まえ、ファイルサイズ(ファイルの数)が異なるパターンでも測定します。

  • アンロードおよびロードするファイルは、ファイルサイズの異なる5パターンを用意する
  • ファイルサイズは、アンロードする際にCOPYコマンドのMAX_FILE_SIZEオプションで指定する
  • オプションに指定するファイルサイズの値は、1MB, 8MB, 16MB, 32MB, 1024MB の5パターンとする
  • 各ファイルサイズを指定してアンロードされたファイルの数は以下の通り
    • アンロードされるファイルの上限サイズを変えているので、サイズが小さいほどファイル数は多くなる
ファイルサイズ ファイル数
1 MB 4,772
8 MB 699
16 MB 407
32 MB 237
1024 MB 128

測定結果

以下の結果となりました。

ウェアハウスとファイルサイズのマトリクスです。
値はロード処理の実行時間で小数点以下は四捨五入しています。

1 MB 8 MB 16 MB 32 MB 1024 MB
1. X-Small 156,045 125,818 125,501 124,803 123,652
2. Small 79,671 65,440 64,789 65,435 65,898
3. Medium 42,168 36,041 36,054 36,014 37,477
4. Large 24,644 21,293 20,488 21,047 23,250
5. X-Large 15,068 14,219 14,266 14,938 16,994

数字だと分かりづらいので、Snowsightでヒートマップ表示してみました。
(小数点以下は丸め表示できなかったため、そのまま表示)

縦軸のウェアハウス間を比較してみると、
ウェアハウスのサイズが大きくなるほど実行時間が短くなっていますね。
どのファイルサイズでも同じ傾向が見られます。

横軸のファイルサイズ間を比較してみると、
1 MBが他のファイルサイズと比べて実行時間が長くなっていますね。
1 MB以外のファイルサイズはあまり差が無いように見えます。

横棒グラフ表示で見てみましょう。

ファイルサイズごとにバーの色が分かれています。

バーの長さ(実行時間)を比較してみると、
X-Smallでは1 MBが最も長く、X-Largeでは1024 MBが最も長くなっています。
ウェアハウスのサイズが大きくなるにつれて、1 MBが短く、1024 MBが長くなる傾向が見られます。

まとめ

以上、ウェアハウスを変更するとデータのロード時間がどう変わるのか実際に試してみました。

ウェアハウスのサイズを大きくすると、ロード時間が短くなることが確認できました。
また、ファイルサイズによってもロード時間が影響を受けることも分かりました。

ファイルサイズが小さければロード時間が短くなるというわけでなく、
ロード処理に適したファイルサイズ(ファイルの数)というのがありそうだと感じました。

今回検証したファイルサイズ以外のパターンを含めると傾向が変わってくるかも知れません。
機会があれば試してみたいと思います。

参考