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>
    
    Copy
  • 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';
    
    Copy
    ALTER DYNAMIC TABLE my_dynamic_table UNSET INITIALIZATION_WAREHOUSE;
    
    Copy

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:

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.