Entender o uso do warehouse para tabelas dinâmicas¶
As tabelas dinâmicas são compatíveis com warehouses duplos para otimizar o desempenho e o custo para diferentes tipos de operações de atualização. Você pode especificar um warehouse dedicado para inicializações e reinicializações, que normalmente consomem mais recursos, enquanto usa outro warehouse para todas as outras atualizações.
As inicializações e reinicializações executam verificações completas de dados e podem levar significativamente mais tempo do que as atualizações incrementais. Essas operações geralmente ocorrem durante eventos como failovers, em que uma tabela dinâmica primária recém-promovida deve executar uma reinicialização completa na primeira atualização. Ao atribuir um warehouse maior ou com melhor desempenho a essas operações, você pode reduzir o tempo de recuperação e atender aos requisitos rigorosos de RTO/RPO sem superdimensionar o warehouse utilizado para atualizações incrementais regulares.
Para obter informações sobre o custo de utilização de warehouses, consulte Understanding costs for dynamic tables.
Execute os seguintes comandos SQL para definir a propriedade INITIALIZATION_WAREHOUSE, que direciona as inicializações e reinicializações para um warehouse dedicado. Todas as outras atualizações usam o warehouse especificado pela propriedade WAREHOUSE.
CREATE DYNAMIC TABLE: Você pode definir a propriedade INITIALIZATION_WAREHOUSE usando qualquer uma das variantes do comando CREATE DYNAMIC TABLE.
CREATE DYNAMIC TABLE my_dynamic_table TARGET_LAG = 'DOWNSTREAM' WAREHOUSE = 'XS_WAREHOUSE' INITIALIZATION_WAREHOUSE = '4XL_WAREHOUSE' AS <query>
ALTER DYNAMIC TABLE: Você pode usar este comando para definir ou remover a propriedade INITIALIZATION_WAREHOUSE. Quando a propriedade INITIALIZATION_WAREHOUSE é SET, o warehouse especificado é utilizado para todas as inicializações e reinicializações; quando a propriedade é UNSET, a tabela dinâmica usa o warehouse especificado pela propriedade WAREHOUSE para todas as atualizações.
ALTER DYNAMIC TABLE my_dynamic_table SET INITIALIZATION_WAREHOUSE = '4XL_WAREHOUSE';
ALTER DYNAMIC TABLE my_dynamic_table UNSET INITIALIZATION_WAREHOUSE;
Se INITIALIZATION_WAREHOUSE não estiver definido, todas as atualizações, incluindo inicializações e reinicializações, serão executadas no warehouse especificado por WAREHOUSE.
Para visualizar o warehouse em uso, você pode usar as seguintes interfaces:
Comando SHOW DYNAMIC TABLES
Exibição ou função de tabela DYNAMIC_TABLE_REFRESH_HISTORY
Snowsight
Você deve usar uma função que tenha recebido o privilégio MONITOR nas tabelas dinâmicas. Para obter mais informações, consulte Liste as tabelas dinâmicas ou visualize as informações sobre colunas específicas e Monitore suas tabelas dinâmicas usando as funções de tabela SQL.
Como as configurações do warehouse afetam o desempenho da tabela dinâmica¶
O tamanho do warehouse nem sempre está diretamente relacionado ao custo de atualização da tabela dinâmica. Para encontrar o tamanho ideal, teste sua consulta de atualização em vários tamanhos de warehouse e compare o desempenho.
Warehouses maiores podem melhorar o desempenho de duas maneiras principais:
Memória: se uma consulta exceder a memória do warehouse, ela será transferida para o armazenamento local, aumentando o trabalho e deixando a execução mais lenta. Um warehouse maior pode evitar transbordamento de dados para o disco e acelerar significativamente a atualização.
Paralelismo: warehouses maiores processam mais tarefas em paralelo. Se a consulta tiver trabalho paralelizável suficiente, aumentar o tamanho do warehouse normalmente reduz o tempo de execução a um custo aproximadamente proporcional; por exemplo, dobrar o tamanho geralmente reduz o tempo de execução pela metade.
No entanto, após um certo ponto, o paralelismo adicional proporciona retornos decrescentes. O dimensionamento otimizado em termos de custo geralmente é suficiente para evitar estouros de memória, mas não tão grande a ponto de saturar o paralelismo.
Para tabelas dinâmicas incrementais, a atualização inicial geralmente requer mais poder computacional do que as atualizações posteriores. Um fluxo de trabalho comum é usar INITIALIZATION_WAREHOUSE para executar as atualizações iniciais em uma instância maior.
Para obter mais informações sobre o dimensionamento do warehouse e o custo associado, consulte Uso de crédito do warehouse virtual.
Limitações e considerações ao usar warehouses duplos¶
Para :doc:` atualizar a tabela dinâmica manualmente </user-guide/dynamic-tables-manual-refresh> , você pode executar :ref:`ALTER DYNAMIC TABLE ... REFRESH COPY SESSION <label-alter_dynamic_table_refresh>. Este comando executa a atualização em uma cópia da sessão atual, usando o usuário e o warehouse atuais. Quando COPY SESSION é especificado, INITIALIZATION_WAREHOUSE é ignorado, mesmo para inicializações e reinicializações. O warehouse de COPY SESSION tem precedência sobre WAREHOUSE e INITIALIZATION_WAREHOUSE.