STV_RECENTS - Amazon Redshift

STV_RECENTS

Use the STV_RECENTS table to find out information about the currently active and recently run queries against a database.

STV_RECENTS is visible to all users. Superusers can see all rows; regular users can see only their own data. For more information, see Visibility of data in system tables and views.

Some or all of the data in this table can also be found in the SYS monitoring view SYS_QUERY_HISTORY. The data in the SYS monitoring view is formatted to be easier to use and understand. We recommend that you use the SYS monitoring view for your queries.

Troubleshooting with STV_RECENTS

STV_RECENTS is particularly helpful for determining if a query or collection of queries is currently running or done. It also shows the duration a query has been running. This is helpful for getting a sense for which queries are long running.

You can join STV_RECENTS to other system views, such as STV_INFLIGHT, to gather additional metadata about running queries. (There's an example that shows how to do this in the sample queries section.) You can also use returned records from this view along with the monitoring features in the Amazon Redshift console for troubleshooting in real time.

System views that compliment STV_RECENTS include STL_QUERYTEXT, which retrieves the query text for SQL commands, and SVV_QUERY_INFLIGHT, which joins STV_INFLIGHT to STL_QUERYTEXT.

Table columns

Column name Data type Description
userid integer ID of user who generated entry.
status character(20) Query status. Valid values are Running, Done.
starttime timestamp Time that the query started.
duration integer Number of microseconds since the session started.
user_name character(50) User name who ran the process.
db_name character(50) Name of the database.
query character(600) Query text, up to 600 characters. Any additional characters are truncated.
pid integer Process ID for the session associated with the query, which is always -1 for queries that have completed.

Sample queries

To determine which queries are currently running against the database, run the following query:

select user_name, db_name, pid, query from stv_recents where status = 'Running';

The sample output below shows a single query running on the TICKIT database:

user_name | db_name | pid | query ----------+---------+---------+------------- dwuser | tickit | 19996 |select venuename, venueseats from venue where venueseats > 50000 order by venueseats desc;

The following example returns a list of queries (if any) that are running or waiting in a queue to run:

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

This query does not return results unless you are running a number of concurrent queries and some of those queries are in a queue.

The following example extends the previous example. In this case, queries that are truly "in flight" (running, not waiting) are excluded from the result:

select * from stv_recents where status<>'Done' and pid not in (select pid from stv_inflight); ...

For more tips on troubleshooting query performance, see Query troubleshooting.