Redshift SVV_TABLE_INFO 中缺少的表 id 应该存在,查看 STL_QUERY 和 STL_SCAN

Posted

技术标签:

【中文标题】Redshift SVV_TABLE_INFO 中缺少的表 id 应该存在,查看 STL_QUERY 和 STL_SCAN【英文标题】:Table ids missing in Redshift SVV_TABLE_INFO that should be there, looking at STL_QUERY and STL_SCAN 【发布时间】:2019-10-04 10:31:20 【问题描述】:

我正在调查 Redshift 查询及其扫描的表。 为此,我从 STL_QUERY 系统视图开始,然后加入 STL_SCAN 视图以添加查询扫描的表。

现在,当我调查查询语句时,我可以看到应该扫描一个真实的 Redshift 表,并查看 SELECT 语句。但是,STL_SCAN 数据显示了三个表(348、671 和 751341)

在这 3 个中,只有一个 (751341) 是通过加入 SVV_TABLE_INFO 找到的真实的。

另外两张表是什么?

【问题讨论】:

【参考方案1】:

Redshift 将低编号的表 ID 分配给中间结果(查询步骤之间的投影、排序输出等)。在某些情况下,中间结果会写入磁盘,并且对这些结果的扫描在 stl_scan 中有一个条目。

“查询分析工作流程”文档为查看 Redshift 查询提供了全面的指导。 https://docs.aws.amazon.com/redshift/latest/dg/c-query-analysis-process.html

作为第一步,您可以先使用以下查询查看解释计划和查询摘要:

--Explain Plan of a Given Query ID
SELECT userid, query, plannode, info
FROM stl_explain
WHERE query IN (79639676)
ORDER BY query, nodeid, parentid
;

--Processing Summary of a Given Query ID
SELECT *
FROM svl_query_summary a
WHERE query IN  (2251580)
ORDER BY query, stm, seg, step
;

【讨论】:

以上是关于Redshift SVV_TABLE_INFO 中缺少的表 id 应该存在,查看 STL_QUERY 和 STL_SCAN的主要内容,如果未能解决你的问题,请参考以下文章

AWS Redshift 中的查询结果大小

由于运行查询,Redshift 集群更大

Amazon Redshift:查找和修复倾斜的 DISTKEY

在 Redshift 中确定字段的字节

从 db 中检索 Redshift 集群指标

AWS 在 VPC 中访问 Redshift