Estimativa e gerenciamento de custos de otimização de pesquisa

O serviço de otimização de pesquisa afeta os custos tanto para o armazenamento quanto para os recursos de computação:

  • Recursos de armazenamento: O serviço de otimização de pesquisa cria uma estrutura de dados do caminho de acesso de pesquisa que requer espaço para cada tabela na qual a otimização de pesquisa está habilitada. O custo de armazenamento do caminho de acesso de pesquisa depende de múltiplos fatores, inclusive:

    • O número de valores distintos na tabela. No caso extremo em que todas as colunas têm tipos de dados que utilizam o caminho de acesso de pesquisa, e todos os valores de dados em cada coluna são únicos, o armazenamento necessário pode ser tão grande quanto o tamanho da tabela original.

      Normalmente, porém, o tamanho é aproximadamente 1/4 do tamanho da tabela original.

  • Recursos de computação:

    • A adição de otimização de pesquisa a uma tabela consome recursos durante a fase inicial.

    • A manutenção do serviço de otimização de pesquisa também requer recursos. O consumo de recursos é maior quando há alta rotatividade (ou seja, quando grandes volumes de dados na tabela mudam). Estes custos são aproximadamente proporcionais à quantidade de dados ingeridos (adicionados ou alterados). As exclusões também têm algum custo.

      O clustering automático, embora melhore a latência das consultas em tabelas com otimização de pesquisa, pode aumentar ainda mais os custos de manutenção da otimização de pesquisa. Se uma tabela tiver uma alta taxa de variação, permitir o clustering automático e configurar a otimização de pesquisa da tabela pode resultar em custos de manutenção mais altos do que se a tabela for apenas configurada para otimização de pesquisa.

      O Snowflake garante o uso eficiente do crédito faturando sua conta somente para os recursos efetivamente utilizados. A cobrança é calculada em incrementos de 1 segundo.

      Consulte a “Serverless Feature Credit Table” na tabela de consumo de serviços do Snowflake para os custos por hora de computação.

      Uma vez ativado o serviço de otimização de pesquisa, você pode visualizar os custos para seu uso do serviço.

Dica

O Snowflake recomenda começar aos poucos com este recurso (ou seja, adicionar otimização de pesquisa a apenas algumas tabelas no início) e monitorar de perto os custos e benefícios.

Estimativa de custos da otimização de pesquisa

Para estimar o custo da adição da otimização de pesquisa a uma tabela e da configuração de colunas específicas para otimização de pesquisa, use a função SYSTEM$ESTIMATE_SEARCH_OPTIMIZATION_COSTS.

Em geral, os custos são proporcionais a:

  • O número de colunas nas quais o recurso está habilitado e o número de valores distintos nessas colunas.

  • A quantidade de dados que muda nestas tabelas.

Importante

Os cálculos de custo retornados pela função SYSTEM$ESTIMATE_SEARCH_OPTIMIZATION_COSTS são os melhores esforços. Os custos reais realizados podem variar significativamente (até 50% ou, em casos raros, várias vezes) dos custos estimados.

  • As estimativas de custo de criação e armazenamento são baseadas na amostragem de um subconjunto das linhas da tabela

  • As estimativas de custo de manutenção são baseadas em atividades recentes de criação, exclusão e atualização na tabela

Visualização dos custos da otimização de pesquisa

Você pode visualizar os custos cobrados atualmente do serviço de otimização de pesquisa usando a interface da Web ou SQL. Consulte Exploração do custo de computação.

Redução dos custos de otimização de pesquisa

Você pode controlar o custo do serviço de otimização de pesquisa selecionando cuidadosamente as tabelas e colunas para as quais habilitar a otimização de pesquisa.

Além disso, para reduzir o custo do serviço de otimização de pesquisa:

  • O Snowflake recomenda executar em lote as operações DML para a tabela:

    • DELETE: Se as tabelas armazenam dados para o período de tempo mais recente (por exemplo, o dia ou semana ou mês mais recente), então quando você ajusta sua tabela excluindo dados antigos, o serviço de otimização de pesquisa deve levar em conta as atualizações. Em alguns casos, você pode ser capaz de reduzir custos excluindo com menos frequência (por exemplo, diariamente e não de hora em hora).

    • INSERT UPDATE e MERGE: A combinação destes tipos de instruções DML na tabela pode reduzir o custo de manutenção através do serviço de otimização de pesquisa.

  • Se você fizer o reclustering de toda a tabela, considere descartar a propriedade SEARCH OPTIMIZATION para a tabela em questão antes do reclustering, e depois adicione a propriedade SEARCH OPTIMIZATION novamente à tabela após o reclustering.

  • Antes de permitir a otimização de pesquisa para pesquisas de subcadeia (ON SUBSTRING(col)) ou VARIANTs (ON EQUALITY(variant_col)), chame SYSTEM$ESTIMATE_SEARCH_OPTIMIZATION_COSTS para estimar os custos. A criação e manutenção inicial destes métodos de pesquisa pode ser intensiva do ponto de vista da computação, portanto, deve-se avaliar o compromisso entre desempenho e custo.