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
estep_type
são-1
, a linha relata as métricas no nível da consulta. -
Se
segment
não é-1
estep_type
é-1
, a linha relata as métricas no nível do segmento. -
Se ambos
segment
estep_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