Monitoramento de cargas de trabalho para tabelas híbridas¶
As cargas de trabalho Unistore que alavancam tabelas híbridas podem ser diferentes de muitas cargas de trabalho analíticas que você está executando no Snowflake. Por exemplo, suas cargas de trabalho podem conter menos consultas exclusivas que levam menos tempo para serem executadas e são executadas com maior frequência. Você tem várias opções para monitorar suas cargas de trabalho.
Monitoramento de cargas de trabalho com exibições do Account Usage¶
Para monitorar suas cargas de trabalho operacionais de maneira eficaz, use Exibição AGGREGATE_QUERY_HISTORY. Essa exibição permite monitorar a integridade da sua carga de trabalho, diagnosticar problemas e identificar caminhos para otimização. A exibição AGGREGATE_QUERY_HISTORY agrega estatísticas de execução de consulta para uma consulta parametrizada repetida durante um intervalo de tempo para que seja mais fácil e eficiente identificar padrões em suas cargas de trabalho e consultas ao longo do tempo. Observe que todas as cargas de trabalho e consultas do Snowflake serão combinadas na saída desta exibição.
A exibição AGGREGATE_QUERY_HISTORY ajuda você a responder às seguintes perguntas sobre suas cargas de trabalho:
Quantas operações por segundo estão sendo executadas no meu warehouse virtual?
Quais consultas estão consumindo mais tempo ou recursos em minha carga de trabalho?
O desempenho de uma consulta específica mudou substancialmente ao longo do tempo?
Para ajudar a melhorar o desempenho e a eficiência da sua carga de trabalho, as execuções individuais de operações de baixa latência (menos de um segundo) não serão armazenadas em Exibição QUERY_HISTORY nem gerarão um perfil de consulta exclusivo. Em vez disso, as estatísticas agregadas para execuções repetidas dessa consulta serão retornadas na exibição AGGREGATE_QUERY_HISTORY. Você também poderá visualizar um perfil de consulta de amostra para a consulta durante um intervalo de tempo selecionado.
Monitoramento da integridade geral da carga de trabalho¶
Use a exibição AGGREGATE_QUERY_HISTORY para monitorar a capacidade e a simultaneidade geral da carga de trabalho e para investigar picos ou quedas inesperadas nas cargas de trabalho. Por exemplo:
SELECT
interval_start_time
, SUM(calls) as execution_count
, SUM(calls) / 60 as queries_per_second
, COUNT(DISTINCT session_id) as unique_sessions
, COUNT(user_name) as unique_users
FROM snowflake.account_usage.aggregate_query_history
WHERE TRUE
AND warehouse_name = '<MY_WAREHOUSE>'
AND interval_start_time > $START_DATE
AND interval_start_time < $END_DATE
GROUP BY
interval_start_time
;
Você também pode usar o histórico de consultas agregadas para monitorar possíveis problemas com erros, enfileiramento, bloqueio de bloqueio ou limitação. Por exemplo:
WITH time_issues AS
(
SELECT
interval_start_time
, SUM(transaction_blocked_time:"SUM") as transaction_blocked_time
, SUM(queued_provisioning_time:"SUM") as queued_provisioning_time
, SUM(queued_repair_time:"SUM") as queued_repair_time
, SUM(queued_overload_time:"SUM") as queued_overload_time
, SUM(hybrid_table_requests_throttled_count) as hybrid_table_requests_throttled_count
FROM snowflake.account_usage.aggregate_query_history
WHERE TRUE
AND warehouse_name = '<MY_WAREHOUSE>'
AND interval_start_time > $START_DATE
AND interval_start_time < $END_DATE
GROUP BY ALL
),
errors AS
(
SELECT
interval_start_time
, SUM(value:"count") as error_count
FROM
(
SELECT
a.interval_start_time
,e.*
FROM
snowflake.account_usage.aggregate_query_history a,
TABLE(flatten(input => errors)) e
WHERE TRUE
AND interval_start_time > $START_DATE
AND interval_start_time < $END_DATE
)
GROUP BY ALL
)
SELECT
time_issues.interval_start_time
, error_count
, transaction_blocked_time
, queued_provisioning_time
, queued_repair_time
, queued_overload_time
, hybrid_table_requests_throttled_count
FROM
time_issues FULL JOIN errors ON errors.interval_start_time = time_issues.interval_start_time
;
Normalmente, essas métricas devem permanecer baixas. Se você observar um aumento inesperado, é recomendável investigar a causa.
Identificação e investigação de consultas repetidas¶
Você pode optar por otimizar ou investigar o desempenho de consultas comuns e frequentemente executadas para melhorar a eficiência da sua carga de trabalho. Use a exibição AGGREGATE_QUERY_HISTORY para identificar as principais consultas de uma carga de trabalho por contagem de execução. Por exemplo:
SELECT
query_parameterized_hash
, any_value(query_text)
, SUM(calls) as execution_count
FROM snowflake.account_usage.aggregate_query_history
WHERE TRUE
AND warehouse_name = '<MY_WAREHOUSE>'
AND interval_start_time > '2024-02-01'
AND interval_start_time < '2024-02-08'
GROUP BY
query_parameterized_hash
ORDER BY execution_count DESC
;
Você pode optar por visualizar métricas para as consultas mais lentas. Por exemplo:
SELECT
query_parameterized_hash
, any_value(query_text)
, SUM(total_elapsed_time:"sum"::NUMBER) / SUM (calls) as avg_latency
FROM snowflake.account_usage.aggregate_query_history
WHERE TRUE
AND warehouse_name = '<MY_WAREHOUSE>'
AND interval_start_time > '2024-02-01'
AND interval_start_time < '2024-02-08'
GROUP BY
query_parameterized_hash
ORDER BY avg_latency DESC
;
Você pode analisar o desempenho de uma consulta específica ao longo do tempo para obter insights sobre tendências de latência. Por exemplo:
SELECT
interval_start_time
, total_elapsed_time:"avg"::number avg_elapsed_time
, total_elapsed_time:"min"::number min_elapsed_time
, total_elapsed_time:"p90"::number p90_elapsed_time
, total_elapsed_time:"p99"::number p99_elapsed_time
, total_elapsed_time:"max"::number max_elapsed_time
FROM snowflake.account_usage.aggregate_query_history
WHERE TRUE
AND query_parameterized_hash = '<123456>'
AND interval_start_time > '2024-02-01'
AND interval_start_time < '2024-02-08'
ORDER BY interval_start_time DESC
;
Esta consulta calcula o tempo total de consulta. Você também pode modificar a consulta para retornar métricas mais granulares nas diferentes fases de uma consulta (compilação, execução, enfileiramento e espera de bloqueio). Estatísticas agregadas serão retornadas para cada fase.