STL_QUERY_METRICS - Amazon Redshift

STL_QUERY_METRICS

Contém as informações de métricas, como o número de linhas processadas, utilização da CPU, entrada/saída e utilização do disco, para consultas que concluíram a execução nas filas de consultas definidas pelo usuário (classes de serviço). Para visualizar as métricas das consultas ativas que estão em execução no momento, consulte a visualização do sistema STV_QUERY_METRICS.

Para as métricas de consulta, as amostras são feitas em intervalos de um segundo. Consequentemente, diferentes execuções da mesma consulta podem retornar tempos um pouco diferentes. Além disso, os segmentos das consultas que são executados em menos de 1 segundo podem não ser registrados.

A tabela STL_QUERY_METRICS rastreia e agrega as métricas no nível da consulta, do segmento e das etapas. Para obter informações sobre os segmentos e as etapas de uma consulta, acesse Planejamento de consulta e fluxo de trabalho de execução. Muitas métricas (como, por exemplo, max_rows, cpu_time, etc.) são resultado da soma obtida das fatias de nós. Para obter mais informações sobre as fatias de nós, consulte Arquitetura de sistema do data warehouse.

Para determinar o nível no qual uma linha relata suas métricas, examine as colunas segment e step_type.

  • Se ambos segment e step_type são -1, a linha relata as métricas no nível da consulta.

  • Se segment não é -1 e step_type é -1, a linha relata as métricas no nível do segmento.

  • Se ambos segment e step_type são diferentes de -1, a linha relata as métricas no nível da etapa.

As visualizações SVL_QUERY_METRICS e SVL_QUERY_METRICS_SUMMARY agregam os dados nesta visão e apresentam as informações de uma forma mais acessível.

STL_QUERY_METRICS permanece visível para todos os usuários. Os superusuários podem ver todas as linhas; usuários regulares podem ver somente seus próprios dados. Para ter mais informações, consulte Visibilidade de dados em tabelas e visualizações de sistema.

Alguns ou todos os dados nessa tabela também podem ser encontrados na exibição de monitoramento SYS SYS_QUERY_DETAIL. Os dados na exibição de monitoramento SYS são formatados para serem mais fáceis de usar e compreender. É recomendável usar a exibição de monitoramento SYS nas consultas.

Colunas da tabela

Nome da coluna Tipo de dados Descrição
userid inteiro O ID do usuário que executou a consulta que gerou a entrada.
service_class inteiro ID da classe de serviço. As filas de consultas são definidas na configuração do WLM. As métricas são relatadas somente para as filas definidas pelo usuário.
consulta inteiro ID da consulta. A coluna de consulta pode ser usada para unir outras tabelas e exibições do sistema.
segment inteiro O número do segmento. Uma consulta consiste em vários segmentos e cada segmento consiste em uma ou mais etapas. Os segmentos de uma consulta podem ser executados em paralelo. Cada segmento executa em um único processo. Se o valor do segmento é -1, os valores das métricas do segmento são acumulados no nível de consulta.
step_type inteiro O tipo da etapa que foi executada. Para obter uma descrição dos tipos de etapas, consulte Tipos de etapas.
starttime timestamp O horário (em UTC) do início da execução da consulta, com 6 dígitos de precisão fracionária de segundos. Por exemplo: 2009-06-12 11:29:19.131358.
slices inteiro O número de fatias do cluster.
max_rows bigint O número máximo de linhas geradas na saída de uma etapa, agregado de todas as fatias.
rows bigint O número de linhas processadas por uma etapa.
max_cpu_time bigint O tempo máximo de CPU usado, em microssegundos. No nível de segmento, o tempo máximo de CPU usado pelo segmento em todas as fatias. No nível de consulta, o tempo máximo de CPU usado por qualquer um dos segmento da consulta.
cpu_time bigint O tempo de CPU usado, em microssegundos. No nível de segmento, o tempo total de CPU usado pelo segmento em todas as fatias. No nível de consulta, a soma dos tempos de CPU da consulta em todas as fatias e segmentos.
max_blocks_read bigint O número máximo de blocos de 1 MB lidos pelo segmento, agregado de todas as fatias. No nível de segmento, o número máximo de blocos de 1 MB lidos para o segmento em todas as fatias. No nível de consulta, o número máximo de blocos de 1 MB lidos por qualquer um dos segmentos da consulta.
blocks_read bigint O número de blocos de 1 MB lidos pela consulta ou segmento.
max_run_time bigint O tempo máximo decorrido para um segmento, em microssegundos. No nível de segmento, o tempo máximo de execução para o segmento em todas as fatias. No nível de consulta, o tempo máximo de execução para qualquer um dos segmento da consulta.
run_time bigint

O tempo total de execução, somado de todas de fatias. O tempo de execução não inclui o tempo de espera.

No nível de segmento, o tempo de execução para o segmento, somado de todas as fatias. No nível de consulta, o tempo de execução da consulta, somado de todas as fatias e segmentos. Como esse valor é uma soma, o tempo de execução não está relacionado ao tempo de execução de consulta.

max_blocks_to_disk bigint A quantidade máxima de espaço em disco usada para gravar resultados intermediários, em blocos de MB. No nível de segmento, a quantidade máxima de espaço em disco usada pelo segmento em todas as fatias. No nível de consulta, a quantidade máxima de espaço em disco usada por qualquer um dos segmento da consulta.
blocks_to_disk bigint A quantidade de espaço em disco usada por uma consulta ou segmento para gravar resultados intermediários, em blocos de MB.
etapa inteiro Etapa da consulta que foi executada.
max_query_scan_size bigint A quantidade máxima de dados pesquisados em varredura por uma consulta, em MB. No nível de segmento, a quantidade máxima de dados pesquisados em varredura por um segmento em todas as fatias. No nível de consulta, a quantidade máxima de dados pesquisados em varredura por qualquer um dos segmento da consulta.
query_scan_size bigint A quantidade de dados pesquisados em varredura por uma consulta, em MB.
query_priority inteiro A prioridade da consulta. Os valores possíveis são -1, 0, 1, 2, 3 e 4, em que -1 significa que a prioridade da consulta não é compatível.
query_queue_time bigint O tempo em microssegundos que a consulta estava em fila.
service_class_name character(64) O nome da classe de serviços.

Consulta de exemplo

Para encontrar as consultas com alto nível de tempo de CPU (mais de 1.000 segundos), execute a consulta a seguir.

Select query, cpu_time / 1000000 as cpu_seconds from stl_query_metrics where segment = -1 and cpu_time > 1000000000 order by cpu_time; query | cpu_seconds ------+------------ 25775 | 9540

Para encontrar as consultas ativas com uma junção de loop aninhado que retornaram mais de um milhão de linhas, execute a seguinte consulta.

select query, rows from stl_query_metrics where step_type = 15 and rows > 1000000 order by rows; query | rows ------+----------- 25775 | 2621562702

Para encontrar as consultas ativas cujas execuções duraram mais de 60 segundos e que usaram menos de 10 segundos de tempo de CPU, execute a seguinte consulta.

select query, run_time/1000000 as run_time_seconds from stl_query_metrics where segment = -1 and run_time > 60000000 and cpu_time < 10000000; query | run_time_seconds ------+----------------- 25775 | 114