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)