STV_RECENTS
Utilice la tabla STV_RECENTS para obtener información acerca de las consultas que están activas actualmente y las que se han ejecutado recientemente en relación con una base de datos.
Todos los usuarios pueden ver STV_RECENTS. Los superusuarios pueden ver todas las filas; los usuarios normales solo pueden ver sus datos. Para obtener más información, consulte Visibilidad de datos en las tablas y vistas de sistema.
Algunos o todos los datos de esta tabla también están en la vista de monitoreo SYS SYS_QUERY_HISTORY. Los datos de la vista de monitoreo SYS están formateados para que sean más fáciles de usar y entender. Se recomienda utilizar la vista de monitoreo SYS para las consultas.
Solución de problemas con STV_RECENTS
STV_RECENTS es útil, en concreto, para determinar si una consulta o una colección de consultas se está ejecutando en ese momento o se ha realizado. También muestra el tiempo que se ha estado ejecutando una consulta. Esto es útil para hacerse una idea de qué consultas son de larga duración.
Puede unir STV_RECENTS a otras vistas del sistema, como STV_INFLIGHT, para recopilar metadatos adicionales sobre las consultas en ejecución. (Hay un ejemplo que muestra cómo hacerlo en la sección de consultas de ejemplo). También puede utilizar los registros devueltos desde esta vista junto con las características de monitoreo de la consola de Amazon Redshift para solucionar problemas en tiempo real.
Las vistas del sistema que complementan STV_RECENTS incluyen STL_QUERYTEXT, que recupera el texto de consulta para los comandos SQL, y SVV_QUERY_INFLIGHT, que une STV_INFLIGHT a STL_QUERYTEXT.
Columnas de la tabla
Nombre de la columna | Tipo de datos | Descripción |
---|---|---|
userid | integer | ID del usuario que generó la entrada. |
estado | character(20) | Estado de la consulta. Los valores válidos son Running y Done . |
starttime | Marca de tiempo | La hora en que comenzó la consulta. |
duration | integer | Cantidad de microsegundos desde que comenzó la sesión. |
user_name | character (50) | Nombre de usuario que ejecutó el proceso. |
db_name | character (50) | Nombre de la base de datos. |
consulta | character(600) | Texto de la consulta, de hasta 600 caracteres. Todo carácter adicional se trunca. |
pid | integer | ID de proceso para la sesión asociada con la consulta, que siempre es -1 para las consultas que se han completado. |
Consultas de ejemplo
Para determinar cuáles son las consultas que se están ejecutando actualmente en la base de datos, ejecute la siguiente consulta:
select user_name, db_name, pid, query from stv_recents where status = 'Running';
En el siguiente ejemplo de salida, se muestra que hay una única consulta en ejecución en la base de datos TICKIT:
user_name | db_name | pid | query ----------+---------+---------+------------- dwuser | tickit | 19996 |select venuename, venueseats from venue where venueseats > 50000 order by venueseats desc;
En el siguiente ejemplo, se devuelve una lista de consultas (en caso de haber alguna) que se están ejecutando o que están esperando en una cola para ejecutarse:
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
Esta consulta no devuelve resultados a menos que esté ejecutando una serie de consultas simultáneas y algunas estén en una cola.
En el siguiente ejemplo, se amplía el ejemplo anterior. En este caso, las consultas que están realmente "en tránsito" (ejecutándose, no esperando) no están incluidas en el resultado:
select * from stv_recents where status<>'Done' and pid not in (select pid from stv_inflight); ...
Para obtener más consejos sobre la resolución de problemas de rendimiento de las consultas, consulte Solución de problemas de consultas.