Erläuterungen zur Nutzung von Warehouses für dynamische Tabellen¶
Dynamische Tabellen unterstützen doppelte Warehouses, um Leistung und Kosten für verschiedene Arten von Aktualisierungsoperationen zu optimieren. Sie können ein dediziertes Warehouse für in der Regel ressourcenintensivere :ref:`Initialisierungen und Reinitialisierungen <label-dynamic_tables_initialization>`angeben, und für alle anderen Aktualisierungen ein anderes Warehouse festlegen.
Initialisierungen und Reinitialisierungen führen vollständige Datenscans durch und können erheblich länger dauern als inkrementelle Aktualisierungen. Diese Operationen treten häufig bei Ereignissen wie Failovers auf, bei denen eine neu heraufgestufte primäre dynamische Tabelle bei ihrer ersten Aktualisierung eine vollständige Neuinitialisierung durchführen muss. Indem Sie diesen Operationen ein größeres oder leistungsfähigeres Warehouse zuweisen, können Sie die Wiederherstellungszeit verkürzen und strenge RTO/RPO-Anforderungen einhalten, ohne das Warehouse übergroß zu gestalten, das für regelmäßige inkrementelle Aktualisierungen verwendet wird.
Weitere Informationen zu den Nutzungskosten von Warehouses finden Sie unter Understanding costs for dynamic tables.
Führen Sie folgende SQL-Befehle aus, um die EigenschaftINITIALIZATION_WAREHOUSE einzustellen, die Initialisierungen und Neuinitialisierungen an ein dediziertes Warehouse leitet. Alle anderen Aktualisierungen verwenden das durch die WAREHOUSE-Eigenschaft angegebene Warehouse.
CREATE DYNAMIC TABLE: Sie können den Wert derINITIALIZATION_WAREHOUSE-Eigenschaft durch Verwendung einer der Varianten des Befehls CREATE DYNAMIC TABLE einstellen.
CREATE DYNAMIC TABLE my_dynamic_table TARGET_LAG = 'DOWNSTREAM' WAREHOUSE = 'XS_WAREHOUSE' INITIALIZATION_WAREHOUSE = '4XL_WAREHOUSE' AS <query>
ALTER DYNAMIC TABLE: Sie können diesen Befehl verwenden, um die INITIALIZATION_WAREHOUSE-Eigenschaft einzustellen oder zu deaktivieren. Wenn die INITIALIZATION_WAREHOUSE-Eigenschaft SET ist, wird das angegebene Warehouse für alle Initialisierungen und Neuinitialisierungen verwendet; wenn die Eigenschaft UNSET ist, verwendet die dynamische Tabelle das Warehouse, das durch die WAREHOUSE-Eigenschaft angegeben ist, für alle Aktualisierungen.
ALTER DYNAMIC TABLE my_dynamic_table SET INITIALIZATION_WAREHOUSE = '4XL_WAREHOUSE';
ALTER DYNAMIC TABLE my_dynamic_table UNSET INITIALIZATION_WAREHOUSE;
Wenn INITIALIZATION_WAREHOUSE nicht festgelegt ist, werden alle Aktualisierungen – einschließlich Initialisierungen und Neuinitialisierungen – auf dem durch WAREHOUSE angegebenen Warehouse ausgeführt.
Um das verwendete Warehouse anzuzeigen, können Sie die folgenden Schnittstellen verwenden:
Befehl SHOW DYNAMIC TABLES
DYNAMIC_TABLE_REFRESH_HISTORY Tabellenfunktion oder Ansicht
Snowsight
Sie müssen eine Rolle verwenden, der die Berechtigung MONITOR für die dynamischen Tabellen zugewiesen wurde. Weitere Informationen dazu finden Sie unter Dynamische Tabellen auflisten oder Informationen zu bestimmten Spalten anzeigen und Überwachen Sie Ihre dynamischen Tabellen mit SQL-Tabellenfunktionen.
Einfluss der Warehouse-Konfigurationen auf die Leistung dynamischer Tabellen¶
Die Warehouse-Größe korreliert nicht immer direkt mit den Kosten für die Aktualisierung dynamischer Tabellen. Um die beste Größe zu finden, testen Sie Ihre Aktualisierungsabfrage mit verschiedenen Warehouse-Größen und vergleichen Sie die Leistung.
Größere Warehouses können die Leistung auf zwei Arten verbessern:
Arbeitsspeicher: Wenn eine Abfrage den Arbeitsspeicher des Warehouses überschreitet, wird sie in den lokalen Speicher ausgelagert, was den Workload erhöht und die Ausführung verlangsamt. Ein größeres Warehouse kann Datenüberlauf vermeiden und die Aktualisierung erheblich beschleunigen.
Parallelität: Größere Warehouses bearbeiten mehr Aufgaben parallel. Wenn die Abfrage über genügend parallelisierbare Arbeit verfügt, verkürzt eine Vergrößerung des Warehouses in der Regel die Laufzeit mit in etwa proportionalen Kosten. Beispielsweise wird die Laufzeit durch Verdoppelung der Größe um die Hälfte reduziert.
Ab einem bestimmten Punkt nimmt der Nutzen zusätzlicher Parallelität jedoch ab. Eine kostenoptimale Dimensionierung ist in der Regel ausreichend, um ein Überlaufen des Arbeitsspeichers zu vermeiden, aber nicht so groß, dass die Parallelität überflüssig ist.
Bei inkrementellen dynamischen Tabellen benötigt die erstmalige Aktualisierung oft mehr Rechenleistung als spätere Aktualisierungen. Ein häufiger Workflow ist die Verwendung von INITIALIZATION_WAREHOUSE, um erste Aktualisierungen auf einer größeren Instanz auszuführen.
Weitere Informationen zur Dimensionierung von Warehouses und den damit verbundenen Kosten finden Sie unter Credit-Nutzung für virtuelle Warehouses.
Einschränkungen und Hinweise bei der Verwendung von doppelten Warehouses¶
Um die dynamische Tabelle manuell zu aktualisieren ausführen. Dieser Befehl führt die Aktualisierung in einer Kopie der aktuellen Sitzung unter Verwendung des aktuellen Benutzers und Warehouses aus. Wenn COPY SESSION angegeben ist, wird INITIALIZATION_WAREHOUSE ignoriert, auch bei Initialisierungen und Neuinitialisierungen. Das Warehouse von COPY SESSION hat Vorrang vor den Optionen WAREHOUSE und INITIALIZATION_WAREHOUSE.