STV_RECENTS
使用 STV_RECENTS 表可以了解有关当前活动的和最近运行的数据库查询的信息。
STV_RECENTS 对所有用户可见。超级用户可以查看所有行;普通用户只能查看其自己的数据。有关更多信息,请参阅系统表和视图中的数据可见性。
表列
| 列名称 | 数据类型 | 描述 |
|---|---|---|
| userid | integer | 生成条目的用户的 ID。 |
| status | character(20) | 查询状态。有效值为 Running、Done。 |
| starttime | timestamp | 开始查询的时间。 |
| duration | integer | 自会话启动以来经过的微秒数。 |
| user_name | character(50) | 运行了进程的用户名。 |
| db_name | character(50) | 数据库的名称。 |
| query | character(600) | 查询文本,最多 600 个字符。截断所有的额外字符。 |
| pid | integer | 与查询关联的会话的进程 ID,对于已完成的查询,该值始终为 -1。 |
示例查询
要确定当前正在对数据库运行哪些查询,请键入以下查询:
select user_name, db_name, pid, query from stv_recents where status = 'Running';
下面的示例输出显示对 TICKIT 数据库运行的单个查询:
user_name | db_name | pid | query ----------+---------+---------+------------- dwuser | tickit | 19996 |select venuename, venueseats from venue where venueseats > 50000 order by venueseats desc;
以下示例返回正在运行或者在队列中等待运行的查询列表(如果有):
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
此查询不返回结果,除非正在运行一些并发查询,而其中一些查询位于队列中。
以下示例扩展前一示例。在此示例中,从结果中排除真正“正在进行”(正在运行,未在等待)的查询:
select * from stv_recents where status<>'Done' and pid not in (select pid from stv_inflight); ...