如何查询指定时间范围内访问Redshift表的查询数量及明细
Redshift表访问统计相关问题解答
1. 特定时间范围命中指定表的查询总数与内容查询方法
你可以通过Redshift内置的系统视图关联查询实现该需求,核心用到SVL_QUERY_SCAN(记录查询扫描的表信息)和STL_QUERYTEXT(记录完整查询内容)两个系统视图,参考SQL如下:
-- 统计指定时间范围、指定表的查询总数 SELECT COUNT(DISTINCT q.query) AS query_total_count FROM svl_query_scan s JOIN stl_querytext q ON s.query = q.query WHERE s.schemaname = '你的Schema名称' AND s.tablename = '你的表名称' AND s.starttime BETWEEN '2024-01-01 00:00:00' AND '2024-01-07 23:59:59'; -- 获取这些查询的具体内容 SELECT DISTINCT q.query, q.text AS query_content, s.starttime AS execute_time FROM svl_query_scan s JOIN stl_querytext q ON s.query = q.query WHERE s.schemaname = '你的Schema名称' AND s.tablename = '你的表名称' AND s.starttime BETWEEN '2024-01-01 00:00:00' AND '2024-01-07 23:59:59' ORDER BY s.starttime DESC;
注意:Redshift默认系统视图仅保留最近90天的查询历史数据,若需要更长周期的统计,需定期将系统视图数据同步到自定义表中存储。
2. Redshift表实时访问统计数据获取方法
可以获取,核心通过以下两个维度的系统视图查询:
- 表级实时统计:查询
SVV_TABLE_INFO视图,可获取目标表的最近访问时间、累计查询次数、累计扫描行数、磁盘占用、分片分布等核心统计指标,参考SQL如下:
SELECT "table", schema, size AS disk_usage_mb, tbl_rows AS total_rows, unsorted_rows, sortkey1_skew, recent_access_time, query_count FROM svv_table_info WHERE schema = '你的Schema名称' AND "table" = '你的表名称';
- 运行中查询实时统计:查询
STL_INFLIGHT视图关联SVL_QUERY_SCAN,可获取当前正在执行的命中目标表的查询的实时运行数据,包括执行时长、扫描数据量、内存占用等指标。
内容的提问来源于stack exchange,提问作者bigDataArtist
相关产品推荐
相关产品推荐

