问题描述
根据文档,
select user_name,db_name,pid,query
from stv_recents
where status = 'Running';
此外,根据文档,
select * from stv_inflight;
但是,我发现两个结果集有时不匹配。现在,有一些SELECT查询已从客户端中止,并且没有显示在stv_inflight表中,但它们以stunning_状态显示在stv_recents表中。
有人可以解释为什么会这样吗?
解决方法
来自 Redshift 系统表和视图上的 documentation,
STV 视图是包含当前系统数据快照的虚拟视图。它们基于暂时的内存数据,不会持久化到基于磁盘的日志或常规表中。
此外,文档解释了以下矛盾的例子。
以下针对系统表的查询很可能会返回行
select * from stv_exec_state
where currenttime > (select max(currenttime) from stv_exec_state)
因此,总的来说,如果您对 STV 表运行查询,您得到的响应将基于内存系统数据结构的瞬时状态,并且两个后续查询的响应很可能不相关.