STV_RECENTS - Amazon Redshift

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.