Use SYS_QUERY_DETAIL para visualizar detalhes de consultas em vários níveis de métrica, com cada linha representando detalhes sobre uma consulta do WLM específica em um determinado nível de métrica. Essa visualizações contém muitos tipos de consultas, como DDL, DML e comandos de utilitário (por exemplo, copiar e descarregar). Algumas colunas podem não ser relevantes, conforme o tipo de consulta. Por exemplo, external_scanned_bytes não é relevante para tabelas internas.
SYS_QUERY_HISTORY é visível a todos os usuários. Os superusuários podem ver todas as linhas; usuários regulares podem ver somente seus próprios dados. Para obter mais informações, consulte Visibilidade de dados em tabelas e visualizações de sistema.
Colunas da tabela
Nome da coluna | Tipo de dados | Descrição |
---|---|---|
user_id | integer | O identificador do usuário que enviou a consulta. |
query_id | bigint | O identificador da consulta. |
child_query_sequence | integer | A sequência da consulta de usuário regravada, começando com 1. |
stream_id | integer | O identificador do fluxo de execução da consulta. |
segment_id | integer | O identificador do segmento da consulta. |
step_id | integer | O identificador da etapa em um segmento. |
step_name | text | O nome da etapa em um segmento. Os valores possíveis são aggregate , broadcast , delete , distribute , hash , hashjoin , insert , limit , merge , nestloop , parse , return , save , scan , sort , sortlimit , unique e window . |
table_id | integer | O identificador de tabela para verificações de tabela permanentes. |
table_name | character(136) | O nome da tabela da etapa que está sendo operada. |
is_rrscan | caractere | Um valor que indica se a etapa é uma etapa de verificação. True (t) indica que a verificação restrita ao intervalo foi utilizada na etapa. |
start_time | timestamp | O horário em que a etapa da consulta começou. Esse campo é registrado no nível do segmento, independentemente do valor na coluna metrics_level . |
end_time | timestamp | O horário em que a etapa da consulta foi concluída. Esse campo é registrado no nível do segmento, independentemente do valor na coluna metrics_level . |
duration | bigint | O tempo (em microssegundos) gasto na etapa. Esse campo é registrado no nível do segmento, independentemente do valor na coluna metrics_level . |
alerta | text | A descrição do evento de alerta. |
input_bytes | bigint | Os bytes de entrada para a etapa atual. |
input_rows | bigint | As linhas de entrada para a etapa atual. |
output_bytes | bigint | Os bytes de saída para a etapa atual. |
output_rows | bigint | As linhas de saída para a etapa atual. |
blocks_read | bigint | O número de blocos lidos pela etapa. |
blocks_write | bigint | O número de blocos gravados pela etapa. |
local_read_IO | bigint | O número de leitura de blocos do cache de disco local. |
remote_read_IO | bigint | O número de blocos lidos remotamente. |
origem | text | O tipo de objeto de banco de dados que foi verificado. Essa coluna só tem um valor quando o valor da linha step_name é scan . |
data_skewness | integer | A distorção da distribuição das linhas de saída entre todas as etapas. É um número no intervalo de 0% a 100%. Quanto maior o número, mais a distribuição é desequilibrada. |
time_skewness | integer | A distorção da distribuição do tempo de execução entre todas as etapas. É um número no intervalo de 0% a 100%. Quanto maior o número, mais a distribuição é desequilibrada. |
is_active | caractere | O estado da consulta no nível de etapa. Os valores possíveis são “t”, que mostra que a etapa está sendo executada ativamente, ou “f”, que indica que a etapa foi concluída. |
spilled_block_local_disk | bigint | O número de blocos excedentes enviados ao disco local. |
spilled_block_remote_disk | bigint | O número de blocos excedentes enviados ao Amazon Simple Storage Service. |
step_attribute | character(64) | Contém informações sobre a etapa associada. Valores possíveis para etapas de verificação: multi-dimensional . |
metrics_level | character(64) | O nível métrico da consulta. Os valores possíveis são:
|
plan_parent_id | integer | O identificador do nó principal do nó do plano. Um nó principal pode ter vários nós secundários. Por exemplo, uma junção de mesclagem é o nó principal das verificações nas tabelas unidas. |
plan_node_id | integer | O identificador de um nó do plano associado a uma ou mais etapas na consulta. |
Observações de uso
SYS_QUERY_DETAIL pode conter métricas no nível de etapa, fluxo, segmento e consulta secundária. Além de usar a coluna metrics_level como referência, você pode visualizar os campos step_id, segment_id e stream_id de acordo com a tabela a seguir para ver qual nível de métrica uma determinada linha está mostrando.
Nível de métrica | valor de stream_id | valor de segment_id | valor de step_id |
---|---|---|---|
consulta secundária | -1 | -1 | -1 |
transmissão | Um valor de etapa válido | -1 | -1 |
segmento | Um valor de etapa válido | Um valor de etapa válido | -1 |
step (etapa) | Um valor de etapa válido | Um valor de etapa válido | Um valor de etapa válido |
Consultas de exemplo
O exemplo a seguir retorna a saída de SYS_QUERY_DETAIL.
A consulta a seguir mostra os detalhes dos metadados da consulta no nível da etapa, incluindo o nome da etapa, input_bytes, output_bytes, input_rows, output_rows.
SELECT query_id,
child_query_sequence,
stream_id,
segment_id,
step_id,
trim(step_name) AS step_name,
duration,
input_bytes,
output_bytes,
input_rows,
output_rows
FROM sys_query_detail
WHERE query_id IN (193929)
ORDER BY query_id,
stream_id,
segment_id,
step_id DESC;
Exemplo de resultado.
query_id | child_query_sequence | stream_id | segment_id | step_id | step_name | duration | input_bytes | output_bytes | input_rows | output_rows
----------+----------------------+-----------+------------+---------+------------+-----------------+-------------+--------------+------------+-------------
193929 | 2 | 0 | 0 | 3 | hash | 37144 | 0 | 9350272 | 0 | 292196
193929 | 5 | 0 | 0 | 3 | hash | 9492 | 0 | 23360 | 0 | 1460
193929 | 1 | 0 | 0 | 3 | hash | 46809 | 0 | 9350272 | 0 | 292196
193929 | 4 | 0 | 0 | 2 | return | 7685 | 0 | 896 | 0 | 112
193929 | 1 | 0 | 0 | 2 | project | 46809 | 0 | 0 | 0 | 292196
193929 | 2 | 0 | 0 | 2 | project | 37144 | 0 | 0 | 0 | 292196
193929 | 5 | 0 | 0 | 2 | project | 9492 | 0 | 0 | 0 | 1460
193929 | 3 | 0 | 0 | 2 | return | 11033 | 0 | 14336 | 0 | 112
193929 | 2 | 0 | 0 | 1 | project | 37144 | 0 | 0 | 0 | 292196
193929 | 1 | 0 | 0 | 1 | project | 46809 | 0 | 0 | 0 | 292196
193929 | 5 | 0 | 0 | 1 | project | 9492 | 0 | 0 | 0 | 1460
193929 | 3 | 0 | 0 | 1 | aggregate | 11033 | 0 | 201488 | 0 | 14
193929 | 4 | 0 | 0 | 1 | aggregate | 7685 | 0 | 28784 | 0 | 14
193929 | 5 | 0 | 0 | 0 | scan | 9492 | 0 | 23360 | 292196 | 1460
193929 | 4 | 0 | 0 | 0 | scan | 7685 | 0 | 1344 | 112 | 112
193929 | 2 | 0 | 0 | 0 | scan | 37144 | 0 | 7304900 | 292196 | 292196
193929 | 3 | 0 | 0 | 0 | scan | 11033 | 0 | 13440 | 112 | 112
193929 | 1 | 0 | 0 | 0 | scan | 46809 | 0 | 7304900 | 292196 | 292196
193929 | 5 | 0 | 0 | -1 | | 9492 | 12288 | 0 | 0 | 0
193929 | 1 | 0 | 0 | -1 | | 46809 | 16384 | 0 | 0 | 0
193929 | 2 | 0 | 0 | -1 | | 37144 | 16384 | 0 | 0 | 0
193929 | 4 | 0 | 0 | -1 | | 7685 | 28672 | 0 | 0 | 0
193929 | 3 | 0 | 0 | -1 | | 11033 | 114688 | 0 | 0 | 0
Para visualizar as tabelas no banco de dados na ordem das mais para as menos usadas, use o exemplo a seguir. Substitua sample_data_dev
por seu próprio banco de dados. Observe que essa consulta contará as consultas a partir da criação do cluster, mas os dados de visualização do sistema não serão salvos quando faltar espaço no data warehouse.
SELECT table_name, COUNT (DISTINCT query_id)
FROM SYS_QUERY_DETAIL
WHERE table_name LIKE 'sample_data_dev%'
GROUP BY table_name
ORDER BY COUNT(*) DESC;
+---------------------------------+-------+
| table_name | count |
+---------------------------------+-------+
| sample_data_dev.tickit.venue | 4 |
| sample_data_dev.myunload1.venue | 3 |
| sample_data_dev.tickit.listing | 1 |
| sample_data_dev.tickit.category | 1 |
| sample_data_dev.tickit.users | 1 |
| sample_data_dev.tickit.date | 1 |
| sample_data_dev.tickit.sales | 1 |
| sample_data_dev.tickit.event | 1 |
+---------------------------------+-------+
O exemplo a seguir mostra os vários níveis de métrica para uma única consulta do WLM.
SELECT query_id, child_query_sequence, stream_id, segment_id, step_id, step_name, start_time, end_time, metrics_level
FROM sys_query_detail
WHERE query_id = 1553 AND step_id = -1
ORDER BY stream_id, segment_id, step_id;
query_id | child_query_sequence | stream_id | segment_id | step_id | step_name | start_time | end_time | metrics_level
----------+----------------------+-----------+------------+---------+-----------+----------------------------+----------------------------+---------------
1553 | 1 | -1 | -1 | -1 | | 2024-10-17 02:28:49.814721 | 2024-10-17 02:28:49.847838 | child query
1553 | 1 | 0 | -1 | -1 | | 2024-10-17 02:28:49.814721 | 2024-10-17 02:28:49.835609 | stream
1553 | 1 | 0 | 0 | -1 | | 2024-10-17 02:28:49.824677 | 2024-10-17 02:28:49.830372 | segment
1553 | 1 | 1 | -1 | -1 | | 2024-10-17 02:28:49.835624 | 2024-10-17 02:28:49.845773 | stream
1553 | 1 | 1 | 1 | -1 | | 2024-10-17 02:28:49.84088 | 2024-10-17 02:28:49.842388 | segment
1553 | 1 | 1 | 2 | -1 | | 2024-10-17 02:28:49.835926 | 2024-10-17 02:28:49.844396 | segment
1553 | 1 | 2 | -1 | -1 | | 2024-10-17 02:28:49.846949 | 2024-10-17 02:28:49.847838 | stream
1553 | 1 | 2 | 3 | -1 | | 2024-10-17 02:28:49.847013 | 2024-10-17 02:28:49.847485 | segment
(8 rows)