0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Snowflake 調べたことまとめ

Last updated at Posted at 2022-12-27

クエリ作ったらやること

  • パフォーマンスチェックのためクエリプロファイルで以下を確認すること
    • スピルして無いこと
    • プルーニングされていること

参考: Snowflake を使うときに初心者に気をつけてほしいこと

Tips

  • 試行錯誤は仮テーブルか一時テーブルを使う
    • 永続テーブルの場合は一定期間FailSafeにデータが溜まり続けてしまうため。 参考: Fail Safe みてない

関連用語

  • Spill / スピル: データがメモリから溢れる状態のこと
    • Snowflake メモリで処理ができなくなったらにディスクにデータをスピルし、次にリモートストレージにスピルします。つまり、スピルしている場合は、クエリかwearhouseを見直した方が良い
    • スピルの状態クエリプロファイルから確認可能
  • マイクロパーティショニング: 行データを格納するファイル
    • 50 MB〜500 MB(非圧縮時) のデータが各マイクロパーティション間で行が均等に分割され、パーティション内でデータは列ごとに並べ替えられて保存されている。この構造により効果的なクエリプルーニングを実現する
      image.png

Snowflakeはテーブルのクエリに対して次のアクションを実行できます:

  1. まず、クエリに不要なマイクロパーティションをプルーニングします。
  2. 次に、残りのマイクロパーティション内の列ごとにプルーニングします。

参考: マイクロパーティションとデータクラスタリング

  • プルーニング: 不必要なデータの読み取りを削減すること
    • snowflakeにおけるプルーニングの特徴

Snowflakeはパーティションの列状スキャンを使用するため、クエリが1列でのみフィルターする場合、パーティション全体はスキャンされません。

言い換えれば、スキャンされたマイクロパーティションと列指向データの比率が選択された実際のデータの比率に近いほど、テーブルで実行されるプルーニングはより効率的です。

参考: クエリプルーニング

  • データクラスタリング

    • クラスタ化の目的は不必要なデータの読み取りを削減(プルーニング)するため
  • 列指向: 列方向にデータをまとめているため、特定の列をまとめて処理することが得意

    • 特定の行を抜き出して更新、削除するのは苦手
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?