動的テーブルのウェアハウスの使用を理解する¶
動的テーブルは、さまざまなタイプのリフレッシュ操作のパフォーマンスとコストを最適化するデュアルウェアハウスをサポートしています。初期化と再初期化 専用のウェアハウスを指定できます。これは通常リソースを大量に消費しますが、他のすべてのリフレッシュには別のウェアハウスを使用します。
初期化と再初期化は完全なデータスキャンを実行し、増分リフレッシュよりも長い時間がかかる場合があります。これらの操作は多くの場合、フェールオーバーなどのイベント中に発生します。その場合、新しく昇格したプライマリ動的テーブルは、最初のリフレッシュ時に完全な再初期化を実行する必要があります。これらの操作に大規模なパフォーマンスのウェアハウスを割り当てることで、復旧時間を短縮し、厳格な RTO/RPO 要件を満たすことができます。定期的な増分リフレッシュに使用されるウェアハウスを大きくする必要はありません。
ウェアハウスの使用コストについては、 Understanding costs for dynamic tables をご参照ください。
次の SQL コマンドを実行して INITIALIZATION_WAREHOUSE プロパティを設定し、初期化と再初期化を専用のウェアハウスに向けます。その他のリフレッシュはすべて、 WAREHOUSE プロパティによって指定されたウェアハウスを使用します。
CREATE DYNAMIC TABLE :CREATE DYNAMIC TABLE コマンドの バリアント のいずれかを使用して INITIALIZATION_WAREHOUSE プロパティを設定します。
CREATE DYNAMIC TABLE my_dynamic_table TARGET_LAG = 'DOWNSTREAM' WAREHOUSE = 'XS_WAREHOUSE' INITIALIZATION_WAREHOUSE = '4XL_WAREHOUSE' AS <query>
ALTER DYNAMIC TABLE:このコマンドを使用して、 INITIALIZATION_WAREHOUSE プロパティを設定または設定解除できます。INITIALIZATION_WAREHOUSE プロパティが SETの場合は、指定されたウェアハウスがすべての初期化と再初期化に使用されます。プロパティが UNSET の場合、動的テーブルはすべてのリフレッシュに対して WAREHOUSE プロパティによって指定されたウェアハウスを使用します。
ALTER DYNAMIC TABLE my_dynamic_table SET INITIALIZATION_WAREHOUSE = '4XL_WAREHOUSE';
ALTER DYNAMIC TABLE my_dynamic_table UNSET INITIALIZATION_WAREHOUSE;
INITIALIZATION_WAREHOUSE が設定されていない場合、すべてのリフレッシュ(初期化と再初期化を含む)は WAREHOUSE によって指定されたウェアハウスで実行されます。
使用中のウェアハウスを表示するには、次のインターフェースを使用します。
SHOW DYNAMIC TABLES コマンド
Snowsight
動的テーブルに対する MONITOR 権限が付与されたロールを使用する必要があります。詳細については、 動的なテーブルのリストや特定の列の情報の表示 および SQL テーブル関数を使用した動的テーブルの監視 をご参照ください。
ウェアハウスの構成が動的テーブルのパフォーマンスに与える影響¶
ウェアハウスのサイズは、動的テーブルのリフレッシュコストと必ずしも直接関連しているわけではありません。最適なサイズを見つけるには、複数のウェアハウスサイズでリフレッシュクエリをテストし、パフォーマンスを比較します。
より大きなウェアハウスは、主に2つの方法でパフォーマンスを向上させることができます。
メモリ:クエリがウェアハウスのメモリを超えると、クエリはローカルストレージにスピルするので、作業が増加し、実行が遅くなります。より大きなウェアハウスは、スピルを回避し、リフレッシュのスピードを大幅に向上させることができます。
並列処理:より大きなウェアハウスでは、より多くのタスクを並行して処理します。クエリに十分な並列化可能な作業がある場合、ウェアハウスのサイズを大きくすると、通常、ほぼコストと比例して実行時間が短縮されます。たとえば、サイズを2倍にすると、多くの場合、ランタイムが半分に短縮されます。
しかし、ある点を過ぎると、並列化を増やしても見返りは少なくなります。コストに最適化したサイズは、通常、メモリのスピルを回避するのには十分ですが、それほど大きくないため並列化が飽和します。
増分動的テーブルの場合、 初期リフレッシュ は、後のリフレッシュよりも多くの計算を必要とすることがよくあります。一般的なワークフローは、 INITIALIZATION_WAREHOUSE を使用してより大きなインスタンスで初期リフレッシュを実行します。
ウェアハウスのサイズ決定と関連コストについては、 仮想ウェアハウスのクレジット使用状況 をご参照ください。
デュアルウェアハウスを使用する際の制限と考慮事項¶
動的テーブルを手動でリフレッシュする には、 ALTER DYNAMIC TABLE ... REFRESH COPY SESSION を実行します。このコマンドは、現在のセッションのコピーで、現在のユーザーとウェアハウスを使用してリフレッシュを実行します。COPY SESSION が指定されている場合、初期化や再初期化でも INITIALIZATION_WAREHOUSE は無視されます。COPY SESSION のウェアハウスは WAREHOUSE および INITIALIZATION_WAREHOUSE の両方よりも優先されます。