ダイナミック・テーブルのパフォーマンスを最適化するベスト・プラクティス¶
ダイナミックテーブルのパフォーマンスを最適化するには、システムを理解し、アイデアを試し、結果に基づいて反復する必要があります。例:
コスト、データラグ、レスポンスタイムのニーズに基づき、データパイプラインを改善する方法を開発します。
以下のアクションを実施します。
クエリを素早く開発するために、小さな固定データセットから始めます。
動いているデータを使ってパフォーマンスをテストします。
データセットをスケールして、ニーズに合っていることを確認します。
調査結果に基づいてワークロードを調整します。
パフォーマンスへの影響が最も大きいタスクに優先順位をつけて、必要に応じて繰り返します。
さらに、ダウンストリームラグを使用してテーブル間のリフレッシュ依存関係を効率的に管理し、必要なときにのみリフレッシュが行われるようにします。
注釈
クエリ時、動的テーブルは通常のSnowflakeテーブルと同様の動作をします。詳細については、 Snowflakeでのパフォーマンスの最適化 をご参照ください。
フルリフレッシュパフォーマンス¶
フルリフレッシュ動的テーブルは、 CREATE TABLE ... AS SELECT (CTAS とも呼ばれる) と同様の動作をします。他のSnowflakeクエリと同様に最適化することができます。
増分リフレッシュパフォーマンス¶
動的テーブルの最適な増分リフレッシュパフォーマンスを実現するには:
ソースと動的テーブルの両方について、リフレッシュ間の変更を最小限、理想的にはデータセット全体の5%未満に抑えます。
行数だけでなく、変更されたマイクロパーティションの数も考慮してください。増分リフレッシュの作業量は、変更された行だけでなく、これらのマイクロパーティションのサイズに比例します。
クエリでは、結合、GROUPBYs、PARTITIONBYsなどのグループ化操作を最小限にします。大きな共通テーブル式(CTEs)を小さな部分に分割し、それぞれに動的テーブルを作成します。過剰な集約や結合を行うことで1つの動的テーブルを圧迫しないようにします。
テーブルの変更をクエリのキーに合わせることで、データの局所性を確保します(例:結合、GROUPBYs、PARTITIONBYs)。テーブルがこれらのキーで自然にクラスタリングされていない場合は、 自動クラスタリング を有効にしてください。