STV_RECENTS
Use a tabela STV_RECENTS para encontrar informações sobre as consultas que estão ativas e as consultas que foram executadas recentemente em um banco de dados.
STV_RECENTS é 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.
Alguns ou todos os dados nessa tabela também podem ser encontrados na exibição de monitoramento SYS SYS_QUERY_HISTORY. 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.
Solução de problemas com STV_RECENTS
STV_RECENTS é particularmente útil para determinar se uma consulta ou coleção de consultas está sendo executada ou concluída no momento. Também mostra a duração em que uma consulta está sendo executada. Isso é útil para ter uma ideia de quais consultas são de longa duração.
Você pode unir STV_RECENTS a outras visualizações do sistema, como STV_INFLIGHT, para coletar metadados adicionais sobre a execução de consultas. (Há um exemplo que mostra como fazer isso na seção de exemplos de consultas.) Também é possível usar os registros retornados dessa visualização com os atributos de monitoramento no console do Amazon Redshift para solucionar problemas em tempo real.
As visualizações do sistema que complementam STV_RECENTS incluem STL_QUERYTEXT, que recupera o texto da consulta para comandos SQL, e SVV_QUERY_INFLIGHT, que une STV_INFLIGHT a STL_QUERYTEXT.
Colunas da tabela
Nome da coluna | Tipo de dados | Descrição |
---|---|---|
userid | inteiro | O ID do usuário que gerou a entrada. |
status | character(20) | Status da consulta. Os valores válidos são Running , Done . |
starttime | timestamp | O horário do início da consulta. |
duration | inteiro | O número de microssegundos transcorridos desde o início da sessão. |
user_name | character(50) | O nome do usuário que executou o processo. |
db_name | character(50) | O nome do banco de dados. |
consulta | character(600) | O texto da consulta, com até 600 caracteres. Todos os caracteres adicionais são truncados. |
pid | inteiro | O ID do processo para a sessão associada à consulta, que é sempre -1 para as consultas que foram concluídas. |
Consultas de exemplo
Para determinar quais consultas estão em execução no momento no banco de dados, execute a seguinte consulta:
select user_name, db_name, pid, query from stv_recents where status = 'Running';
Os dados de saída do exemplo mostram uma única consulta sendo executada no banco de dados TICKIT:
user_name | db_name | pid | query ----------+---------+---------+------------- dwuser | tickit | 19996 |select venuename, venueseats from venue where venueseats > 50000 order by venueseats desc;
O exemplo a seguir retorna uma lista de consultas (se houver) em execução ou em uma fila de espera para execução:
select * from stv_recents where status<>'Done'; status | starttime | duration |user_name|db_name| query | pid -------+---------------------+----------+---------+-------+-----------+------ Running| 2010-04-21 16:11... | 281566454| dwuser |tickit | select ...| 23347
Essa consulta não retorna resultados, a menos que você esteja executando um número de consultas simultâneas e que algumas dessas consultas estejam em uma fila.
O exemplo a seguir amplia o exemplo anterior. Neste caso, as consultas que estão verdadeiramente “em movimento” (em execução, não aguardando) são excluídas do resultado:
select * from stv_recents where status<>'Done' and pid not in (select pid from stv_inflight); ...
Para obter mais dicas sobre como solucionar problemas de performance de consultas, consulte Solução de problemas de consultas.