Como experimentar a aceleração de consulta

Este tópico fornece uma visão geral de como um proprietário ou administrador de warehouse pode usar o Query Acceleration Service para melhorar o desempenho das consultas executadas em um warehouse. Para obter detalhes completos sobre aceleração de consulta, consulte Uso do Query Acceleration Service.

O Query Acceleration Service descarrega partes do processamento de consultas para recursos de computação sem servidor, o que acelera o processamento de uma consulta enquanto reduz sua demanda sobre os recursos de computação do warehouse.

Quando um warehouse tem consultas de exceções (ou seja, consultas que utilizam mais recursos do que uma consulta típica), o Query Acceleration Service também pode melhorar o desempenho das outras consultas do warehouse porque as demandas de computação extra das consultas de exceção são descarregadas para recursos de computação sem servidor.

Exemplos de cargas de trabalho que podem se beneficiar do Query Acceleration Service incluem análises ad hoc, cargas de trabalho com volume de dados imprevisíveis por consulta e consultas com grandes varreduras e filtros seletivos.

Nota

Você deve ter acesso ao banco de dados SNOWFLAKE compartilhado para executar as consultas de diagnóstico fornecidas neste tópico. Por padrão, somente a função ACCOUNTADMIN tem os privilégios necessários para executar as consultas.

Como encontrar candidatos para Query Acceleration

Você pode usar uma função ou consultas para determinar se a habilitação do Query Acceleration Service pode melhorar o desempenho de uma consulta ou conjunto de consultas.

Função: Determinar se uma consulta específica pode se beneficiar

A função SYSTEM$ESTIMATE_QUERY_ACCELERATION permite que você verifique se uma consulta específica é uma boa candidata para o Query Acceleration Service.

A função aceita um ID de consulta como seu único argumento. Colocar a função na função PARSE_JSON torna mais fácil a interpretação dos resultados. Por exemplo:

select parse_json(system$estimate_query_acceleration('8cd54bf0-1651-5b1c-ac9c-6a9582ebd20f'));
Copy

Se uma consulta for uma candidata ao Query Acceleration Service e ainda não foi acelerada, o status da resposta será eligible. Um status de ineligible indica que a consulta não será beneficiada se você habilitar o Query Acceleration Service para um warehouse.

Para informações adicionais sobre a avaliação do Query Acceleration Service para uma determinada consulta, incluindo tempos estimados de execução para diferentes fatores de escala, consulte a documentação de referência.

Consulta: Melhores candidatos de consulta entre os warehouses

Esta consulta identifica as consultas que mais se beneficiariam do Query Acceleration Service ao calcular a quantidade de tempo de execução da consulta que é qualificado para aceleração.

SELECT query_id, eligible_query_acceleration_time
  FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_ACCELERATION_ELIGIBLE
  ORDER BY eligible_query_acceleration_time DESC;
Copy

Consulta: Melhores candidatos de warehouse por tempo de execução

Esta consulta identifica os warehouses que podem se beneficiar do Query Acceleration Service. Para cada warehouse, ela calcula o tempo total de execução da consulta elegível para aceleração:

SELECT warehouse_name, SUM(eligible_query_acceleration_time) AS total_eligible_time
  FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_ACCELERATION_ELIGIBLE
  GROUP BY warehouse_name
  ORDER BY total_eligible_time DESC;
Copy

Consulta: Melhores candidatos de warehouse por número de consultas

Esta consulta identifica os warehouses em um determinado período com o maior número de consultas elegíveis para o Query Acceleration Service.

SELECT warehouse_name, COUNT(query_id) AS num_eligible_queries
  FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_ACCELERATION_ELIGIBLE
  WHERE start_time > 'Mon, 29 May 2023 00:00:00'::timestamp
  AND end_time < 'Tue, 30 May 2023 00:00:00'::timestamp
  GROUP BY warehouse_name
  ORDER BY num_eligible_queries DESC;
Copy

Considerações sobre custo

Os recursos de computação sem servidor alugados por um warehouse para aceleração da consulta consomem créditos independentemente dos créditos consumidos pelo warehouse, e são faturados separadamente.

O Query Acceleration Service é habilitado para um warehouse inteiro, mas, ao contrário de um warehouse de tamanho superior, ele só é usado para consultas que se beneficiam do aumento da potência de computação. Isto pode ser rentável para warehouses que executam uma carga de trabalho mista, pois as consultas que não exigem recursos de computação adicionais não acarretam o custo adicional de utilizar um warehouse maior.

Você pode usar o fator de escala do warehouse para ajudar a controlar o custo do Query Acceleration Service. Este fator de escala, que é um multiplicador do consumo de crédito do warehouse, estabelece um limite de quanto a computação sem servidor pode ser usada por um warehouse. Por exemplo, se um warehouse tiver um fator de escala de 5, a taxa de consumo de crédito dos recursos de computação sem servidor não pode exceder a taxa de consumo do warehouse em mais de 5 vezes.

Você pode usar a função SYSTEM$ESTIMATE_QUERY_ACCELERATION para medir como o fator de escala afeta o desempenho de uma consulta.

Para maximizar o desempenho sem considerar o custo, defina o fator de escala para 0.

Como ativar o Query Acceleration Service

Para ativar o Query Acceleration Service com um aumento de desempenho maximizado, use o comando ALTER WAREHOUSE da seguinte forma:

ALTER WAREHOUSE my_wh SET
  ENABLE_QUERY_ACCELERATION = true
  QUERY_ACCELERATION_MAX_SCALE_FACTOR = 0;
Copy