STL_ALERT_EVENT_LOG
Registra um alerta quando o otimizador de consultas identifica as condições que podem indicar problemas de performance. Use a visualização STL_ALERT_EVENT_LOG para identificar oportunidades para melhorar a performance da consulta.
Uma consulta consiste em vários segmentos e cada segmento consiste em uma ou mais etapas. Para ter mais informações, consulte Processamento de consulta.
STL_ALERT_EVENT_LOG é 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_ALERT_EVENT_LOG 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. |
pid | inteiro | O ID do processo associado à instrução e à fatia. A mesma consulta poderá ter vários PIDs, se for executada em várias fatias. |
xid | bigint | O ID da transação associada à instrução. |
evento | character(1024) | A descrição do evento de alerta. |
solução | character(1024) | A solução recomendada. |
event_time | 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 . |
Observações de uso
Você pode usar o STL_ALERT_EVENT_LOG para identificar problemas potenciais nas consultas, depois siga as práticas recomendadas em Ajustar o desempenho da consulta para otimizar o design do banco de dados e reescrever as consultas. A tabela STL_ALERT_EVENT_LOG registra os seguintes alertas:
-
Ausência de estatísticas
Não há estatísticas. Execute o ANALYZE depois de carregar dados ou de atualizações significativas e use o STATUPDATE com as operações COPY. Para ter mais informações, consulte Práticas recomendadas do Amazon Redshift para criar consultas.
-
Loop aninhado
Um loop aninhado é geralmente um produto cartesiano. Avalie sua consulta para assegurar que todas as tabelas que participam das operações estão sendo unidas de forma eficiente.
-
Filtro muito seletivo
A taxa de linhas retornadas em relação às linhas pesquisadas na varredura é menor do que 0.05. Linhas verificadas refere-se ao valor de
rows_pre_user_filter
e linhas retornadas refere-se ao valor das linhas na visualização do sistema STL_SCAN. Indica que a consulta está fazendo a varredura em um número excepcionalmente grande de linhas para determinar o conjunto de resultados. Isso pode ser causado pela falta ou por erros de chaves de classificação. Para ter mais informações, consulte Chaves de classificação. -
Excesso de linhas fantasma
Uma varredura ignorou um número relativamente grande de linhas que estão marcadas como excluídas, mas não como limpadas, ou de linhas que foram inseridas, mas não confirmadas. Para ter mais informações, consulte Vacuum de tabelas.
-
Grande distribuição
Mais de 1.000.000 de linhas foram redistribuídas para uma junção hash ou agregação. Para ter mais informações, consulte Distribuição de dados para otimização de consultas.
-
Grande transmissão
Mais de 1.000.000 de linhas foram transmitidas para uma junção hash. Para ter mais informações, consulte Distribuição de dados para otimização de consultas.
-
Execução em série
Um estilo de redistribuição DS_DIST_ALL_INNER foi indicado no plano de consulta, o que força uma execução em série, pois toda a tabela interna foi redistribuída para um único nó. Para ter mais informações, consulte Distribuição de dados para otimização de consultas.
Consultas de exemplo
As consultas a seguir mostram eventos de alerta para quatro consultas.
SELECT query, substring(event,0,25) as event, substring(solution,0,25) as solution, trim(event_time) as event_time from stl_alert_event_log order by query; query | event | solution | event_time -------+-------------------------------+------------------------------+--------------------- 6567 | Missing query planner statist | Run the ANALYZE command | 2014-01-03 18:20:58 7450 | Scanned a large number of del | Run the VACUUM command to rec| 2014-01-03 21:19:31 8406 | Nested Loop Join in the query | Review the join predicates to| 2014-01-04 00:34:22 29512 | Very selective query filter:r | Review the choice of sort key| 2014-01-06 22:00:00 (4 rows)