STL_SCAN - Amazon Redshift

STL_SCAN

Analisa as etapas de varredura de tabelas nas consultas. O número da etapa para as linhas dessa tabela é sempre 0, pois a varredura é a primeira etapa em um segmento.

STL_SCAN 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.

nota

STL_SCAN só contém consultas executadas em clusters principais. Ele não contém consultas executadas em clusters de escalabilidade de simultaneidade. Para acessar consultas executadas em clusters de escalabilidade principais e de simultaneidade, é recomendável usar a 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.

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. A coluna de consulta pode ser usada para unir outras tabelas e exibições do sistema.
slice inteiro O número que identifica a fatia em que a consulta estava sendo executada.
segment inteiro O número que identifica o segmento da consulta.
etapa inteiro Etapa da consulta que foi executada.
starttime timestamp O horário (em UTC) de início da consulta. O tempo total inclui consultas e execução, com seis dígitos de precisão para segundos fracionários. Por exemplo: 2009-06-12 11:29:19.131358.
endtime timestamp Horário em UTC em que a consulta foi finalizada. O tempo total inclui consultas e execução, com seis dígitos de precisão para segundos fracionários. Por exemplo: 2009-06-12 11:29:19.131358.
tasknum inteiro Número do processo de tarefa de consulta que foi atribuído para executar a etapa.
rows bigint O número total de linhas que foram processadas.
bytes bigint O tamanho, em bytes, de todas as linhas de saída da etapa.
fetches bigint Essas informações são somente para uso interno.
tipo inteiro O ID do tipo de varredura. Para ver uma lista de valores válidos, consulte tabela a seguir.
tbl inteiro ID da tabela.
is_rrscan character(1) O valor true (t) indica que a varredura restrita ao intervalo foi utilizada na etapa.
is_delayed_scan character(1) Essas informações são somente para uso interno.
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.
rows_pre_user_filter bigint Para varreduras de tabelas permanentes, o número total de linhas processadas após a filtragem das linhas marcadas para exclusão (linhas fantasma), mas antes de aplicar os filtros de consulta definidos pelo usuário.
perm_table_name character(136) Para varreduras de tabelas permanentes, o nome da tabela pesquisada na varredura.
is_rlf_scan character(1) O valor true (t) indica que o filtro de baixo nível foi utilizado na etapa.
is_rlf_scan_reason inteiro Essas informações são somente para uso interno.
num_em_blocks inteiro Essas informações são somente para uso interno.
soma de verificação bigint Essas informações são somente para uso interno.
runtime_filtering character(1) Se true (t), indica que os filtros do tempo de execução são aplicados.
scan_region inteiro Essas informações são somente para uso interno.
num_sortkey_as_predicate inteiro Essas informações são somente para uso interno.
row_fetcher_state inteiro Essas informações são somente para uso interno.
consumed_scan_ranges bigint Essas informações são somente para uso interno.
work_stealing_reason bigint Essas informações são somente para uso interno.
is_vectorized_scan character(1) Essas informações são somente para uso interno.
is_vectorized_scan_reason inteiro Essas informações são somente para uso interno.
row_fetcher_reason bigint Essas informações são somente para uso interno.
topology_signature bigint Essas informações são somente para uso interno.
use_tpm_partição character(1) Essas informações são somente para uso interno.
is_rrscan_expr character(1) Essas informações são somente para uso interno.
scanned_mega_value character(1) Essas informações são somente para uso interno. Essas informações mostram se a etapa de varredura fornecida digitalizou um valor grande. Um valor grande será armazenado em vários blocos. O tamanho do bloco é de 1 MB por padrão; um valor grande é maior que 1 MB em uma configuração padrão.

Tipos de varredura

ID do tipo Descrição
1 Os dados da rede.
2 As tabelas de usuário permanentes em memória compartilhada compactada.
3 As tabelas transitórias lineares.
21 Carregar arquivos do Amazon S3.
22 Carregar tabelas do Amazon DynamoDB.
23 Os dados de carga de uma conexão SSH remota.
24 Os dados de carga do cluster remoto (região classificada). Esse tipo é usado para redimensionamento.
25 Os dados de carga do cluster remoto (região não classificada). Esse tipo é usado para redimensionamento.
28 Leia dados de uma exibição de série temporal com UNION ALL em várias tabelas.
29 Leia dados de tabelas externas do Amazon S3.
30 Leia as informações de partição de uma tabela externa do Amazon S3.
33 Leia dados de uma tabela remota do Postgres.
36 Leia dados de uma tabela remota do MySQL.
37 Leia dados de um fluxo remoto do Kinesis.

Observações de uso

Idealmente, o número de rows deve estar relativamente perto do número de rows_pre_filter. Uma diferença grande entre rows e rows_pre_filter indica que o mecanismo de execução está pesquisando linhas que serão descartadas mais tarde, o que é ineficiente. A diferença entre rows_pre_filter e rows_pre_user_filter é o número de linhas fantasma na varredura. Execute o comando VACUUM para remover as linhas marcadas para exclusão. A diferença entre rows e rows_pre_user_filter é o número de linhas filtradas pela consulta. Se muitas linhas estiverem sendo rejeitadas pelo filtro do usuário, reveja a escolha de coluna de classificação ou, se isso for devido a uma região extensa não classificada, execute uma limpeza.

Consultas de exemplo

O exemplo a seguir mostra que rows_pre_filter é maior do que rows_pre_user_filter, pois a tabela tem linhas excluídas que não foram limpadas (linhas fantasma).

SELECT query, slice, segment,step,rows, rows_pre_filter, rows_pre_user_filter from stl_scan where query = pg_last_query_id(); query | slice | segment | step | rows | rows_pre_filter | rows_pre_user_filter -------+--------+---------+------+-------+-----------------+---------------------- 42915 | 0 | 0 | 0 | 43159 | 86318 | 43159 42915 | 0 | 1 | 0 | 1 | 0 | 0 42915 | 1 | 0 | 0 | 43091 | 86182 | 43091 42915 | 1 | 1 | 0 | 1 | 0 | 0 42915 | 2 | 0 | 0 | 42778 | 85556 | 42778 42915 | 2 | 1 | 0 | 1 | 0 | 0 42915 | 3 | 0 | 0 | 43428 | 86856 | 43428 42915 | 3 | 1 | 0 | 1 | 0 | 0 42915 | 10000 | 2 | 0 | 4 | 0 | 0 (9 rows)