SVL_QUERY_REPORT
O Amazon Redshift cria a visualização SVL_QUERY_REPORT de uma UNION de várias tabelas de sistema STL do Amazon Redshift para fornecer informações sobre as etapas de consulta concluídas.
Essa visualização divide as informações sobre as consultas executadas por fatia e por etapa, o que pode ajudar a solucionar problemas de nó e fatia no cluster do Amazon Redshift.
SVL_QUERY_REPORT é 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 gerou a entrada. |
consulta | inteiro | ID da consulta. Ele pode ser usado para unir várias outras tabelas e exibições do sistema. |
slice | inteiro | A fatia dos dados onde a etapa foi executada. |
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. |
etapa | inteiro | A etapa da consulta que foi concluída. |
start_time | timestamp | O horário exato (em UTC) do início da execução do segmento, com 6 dígitos de precisão para as frações de segundo. Por exemplo: 2012-12-12 11:29:19.131358 |
end_time | timestamp | O horário exato (em UTC) do término da execução do segmento, com 6 dígitos de precisão para as frações de segundo. Por exemplo: 2012-12-12 11:29:19.131467 |
elapsed_time | bigint | O tempo (em microssegundos) que levou para o segmento ser executado. |
rows | bigint | O número de linhas produzidas por etapa (por fatia). Esse número representa o número de linhas da fatia que resulta da execução das etapas, e não do número de linhas recebidas ou processadas por etapa. Em outras palavras, esse é o número de linhas que sobreviveram essa etapa e foram passadas para a próxima etapa. |
bytes | bigint | O número de bytes produzidos pela etapa (por fatia). |
rótulo | char(256) | O rótulo da etapa, que consiste no nome da etapa da consulta e, se for aplicável, no ID e no nome da tabela (por exemplo, scan tbl=100448 name =user ). Os IDs de tabela com três dígitos geralmente indicam varreduras de tabelas transitórias. Quando você vê
tbl=0 , isso normalmente indica uma varredura de um valor constante. |
is_diskbased | character(1) | Indica se esta etapa da consulta foi realizada como uma operação em disco: true (t ) ou false (f ). Somente algumas etapas, como hash, classificação e etapas de agregação podem ir para o disco. Muitos tipos de etapas são sempre realizados na memória. |
workmem | bigint | A quantidade de memória de trabalho (em bytes) atribuída à etapa da consulta. Este valor é o limite de query_working_mem alocado para ser usado durante a execução, não a quantidade de memória que foi realmente usada |
is_rrscan | character(1) | O valor true (t ) indica que a varredura restrita ao intervalo foi utilizada na etapa. |
is_delayed_scan | character(1) | O valor true (t ) indica que a varredura com atraso foi utilizada na etapa. |
rows_pre_filter | bigint | Para varreduras de tabelas permanentes, o número total de linhas enviadas antes da filtragem das linhas marcadas para exclusão (linhas fantasma) e antes de aplicar os filtros de consulta definidos pelo usuário. |
Consultas de exemplo
A consulta a seguir demonstra a distorção dos dados das linhas retornadas para a consulta com o ID 279. Use esta consulta para determinar se os dados do banco de dados serão distribuídos uniformemente pelas fatias no cluster do data warehouse:
select query, segment, step, max(rows), min(rows), case when sum(rows) > 0 then ((cast(max(rows) -min(rows) as float)*count(rows))/sum(rows)) else 0 end from svl_query_report where query = 279 group by query, segment, step order by segment, step;
Esta consulta deve retornar dados semelhantes aos apresentados na seguinte saída de exemplo:
query | segment | step | max | min | case ------+---------+------+----------+----------+---------------------- 279 | 0 | 0 | 19721687 | 19721687 | 0 279 | 0 | 1 | 19721687 | 19721687 | 0 279 | 1 | 0 | 986085 | 986084 | 1.01411202804304e-06 279 | 1 | 1 | 986085 | 986084 | 1.01411202804304e-06 279 | 1 | 4 | 986085 | 986084 | 1.01411202804304e-06 279 | 2 | 0 | 1775517 | 788460 | 1.00098637606408 279 | 2 | 2 | 1775517 | 788460 | 1.00098637606408 279 | 3 | 0 | 1775517 | 788460 | 1.00098637606408 279 | 3 | 2 | 1775517 | 788460 | 1.00098637606408 279 | 3 | 3 | 1775517 | 788460 | 1.00098637606408 279 | 4 | 0 | 1775517 | 788460 | 1.00098637606408 279 | 4 | 1 | 1775517 | 788460 | 1.00098637606408 279 | 4 | 2 | 1 | 1 | 0 279 | 5 | 0 | 1 | 1 | 0 279 | 5 | 1 | 1 | 1 | 0 279 | 6 | 0 | 20 | 20 | 0 279 | 6 | 1 | 1 | 1 | 0 279 | 7 | 0 | 1 | 1 | 0 279 | 7 | 1 | 0 | 0 | 0 (19 rows)