Redshift Table - 查找表上的查询的最后日期

问题描述:

我想清理我的小型数据库,并试图看到当最后一次实际查询一些表但似乎无法找到任何文档如何做这个。我可以在我的模式和大小中获得所有表的列表,但是在轮询我的用户之前无法确定什么可能是陈旧的。Redshift Table - 查找表上的查询的最后日期

有没有人知道一种方法来获取在红移中使用/查询表的最后日期?

select 
    schema, 
    "table", 
    size as GB 
from svv_table_info 
    where schema = 'measure' or schema = 'mphd' or schema = 'offer' 
order by schema asc; 

您很可能必须解析存储SQL查询的STL_QUERYTEXT中的条目。

解析STL_EXPLAIN可能更容易。

这两个表都可以连接回STL_QUERY以获取执行查询的时间。

+0

但是,STL表只能保存2-5天的历史记录,所以这只会告诉你它是否最近被查询过。您可能需要开始将STL表卸载到S3文件(亚马逊推荐的方法)中,然后将它们加载到您自己的查询历史记录表中,并运行一段时间以收集必要数量的数据以确定哪些表未被查询你的数据库。 – Nathan

您可以在stl_scan中查看上次扫描表的时间。几乎所有选择的查询都将被扫描。以下内容取自:https://github.com/awslabs/amazon-redshift-utils/blob/master/src/AdminViews/v_extended_table_info.sql正如您所注意到的,历史仅限于有限的时间。

SELECT tbl, 
     MAX(endtime) last_scan, 
     Nvl(COUNT(DISTINCT query || LPAD(segment,3,'0')),0) num_scans 
FROM stl_scan s 
WHERE s.userid > 1 
AND s.tbl IN (SELECT oid FROM tbl_ids) 
GROUP BY tbl