🗂
【Snowflake】クラウドサービスレイヤーと効率的なクエリ実行
このページは、親記事のうち、1.3節の内容です。
Snowflakeについてさらに学習したい方は、親記事から各ページをご参照ください。
1.3. クラウドサービスレイヤー
1.3.1. 役割
1.2.1. 3層アーキテクチャの各レイヤーの役割から転記
- クラウドサービスレイヤー
- 全体の一貫性・セキュリティを統制。
- 認証、アクセス制御、インフラストラクチャ管理、メタデータ管理、クエリの解析および最適化
- 上記「クエリの解析および最適化」について、一部のクエリ(後述)ではクラウドサービスレイヤーのみで結果が返せるが、そこも含んだ記載。一般のクエリオプティマイザーの役割だけではない。
1.3.2. 効率的なクエリ実行のためのポイント
より効率よくクエリを実行するために、クラウドサービスレイヤーの観点で1点考慮する
- 結果キャッシュの利用
- 全く同じテーブルの状態で、全く同じクエリを実行した場合に、結果キャッシュを用いて即座に全く同じ結果を返すことができる ※実際はもう少し細かい条件あり
- クラウドサービスレイヤーで実行され、コンピューティングリソースは使わない
- 逆に、性能検証時は、実際よりも格段に速く実行できてしまう可能性があるため、オフにするかどうかを検討する必要あり
- 公式:クエリ結果のキャッシュ
- メタデータキャッシュの利用
- テーブルの行数、各カラムのdistinct値の個数・NULL値の個数・min・maxはメタデータのみで結果を返せる
- 参考:Snowflakeのキャッシュ活用について(Ipponブログ)
Discussion