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的主要内容,如果未能解决你的问题,请参考以下文章