SVCS_ALERT_EVENT_LOG
Registra um alerta quando o otimizador de consultas identifica as condições que podem indicar problemas de performance. Essa visualização é derivada da tabela do sistema STL_ALERT_EVENT_LOG, mas não mostra o nível de fatia para consultas executadas em um cluster de escalabilidade da simultaneidade. Use a tabela SVCS_ALERT_EVENT_LOG para identificar meios de melhorar a performance da consulta.
Uma consulta consiste em vários segmentos e cada segmento consiste em uma ou mais etapas. Para obter mais informações, consulte Processamento de consulta.
nota
Visualizações do sistema com o prefixo SVCS fornecem detalhes sobre consultas nos clusters principal e de escalabilidade da simultaneidade. As visualizações são semelhantes às tabelas com o prefixo STL, exceto que as tabelas STL fornecem informações somente para consultas executadas no cluster principal.
SVCS_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 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 |
---|---|---|
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. |
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 SVCS_ALERT_EVENT_LOG para identificar problemas potenciais nas consultas, depois siga as práticas recomendadas em Ajustar a performance da consulta para otimizar o design do banco de dados e reescrever as consultas. A tabela SVCS_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 obter 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. As linhas pesquisadas na varredura são representadas pelo valor de
rows_pre_user_filter
e as linhas retornadas são representadas pelo valor de STL_SCAN na tabela do sistema. 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 obter mais informações, consulte Trabalhar com 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 obter 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 obter mais informações, consulte Trabalhar com estilos de distribuição de dados.
-
Grande transmissão
Mais de 1.000.000 de linhas foram transmitidas para uma junção hash. Para obter mais informações, consulte Trabalhar com estilos de distribuição de dados.
-
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 obter mais informações, consulte Trabalhar com estilos de distribuição de dados.
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 svcs_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)