Redshift如何查看表中已分析(Analyzed)的列信息
Redshift查看表列"Analyzed(已分析)"状态的方法
Redshift没有和Teradata HELP STATS 完全同名的单条格式化输出命令,但通过内置系统视图可以拿到完全等价的列分析状态、统计信息详情,具体方法如下:
- 查询列级已分析标记
直接查询SVV_COLUMN_STATS系统视图即可,这是Redshift存储列级统计元数据的核心视图,其中stats_updated字段非空就代表该列已经完成统计分析,完全对应你要找的"Analyzed"标记,同时还能获取列的基数、空值数等统计值:
SELECT schema_name, table_name, column_name, stats_updated, -- 非空即为已分析状态 num_distinct, num_nulls FROM svv_column_stats WHERE schema_name = '替换为目标schema名称' AND table_name = '替换为目标表名称';
- 查询表级统计信息健康度
如果需要确认统计信息是否过期,可以查询SVV_TABLE_INFO视图,其中stats_off字段代表统计结果和实际数据的偏差比例,数值为0代表统计信息完全最新,数值越大说明统计信息过期越久、查询优化器参考价值越低:
SELECT schema, "table", stats_off, -- 统计偏差率,0为最新状态 rows, size FROM svv_table_info WHERE schema = '替换为目标schema名称' AND "table" = '替换为目标表名称';
- 查询历史分析操作日志
如果需要追溯ANALYZE任务的执行记录(包括后台自动触发的自动分析任务),可以查询STL_ANALYZE系统日志表,里面存储了所有历史分析操作的执行时间、涉及列、运行状态等信息:
SELECT xid, tbl AS table_id, colname, starttime, endtime, status FROM stl_analyze WHERE tbl = '替换为目标表名称'::regclass ORDER BY starttime DESC;
补充说明:Redshift默认开启Auto Analyze自动分析特性,后台会自动对数据变动量超过阈值的表更新列统计信息,上述视图会自动同步自动分析产生的状态数据,不需要手动执行ANALYZE命令也能查到最新的列分析标记。
内容的提问来源于stack exchange,提问作者Gary A
相关产品推荐
相关产品推荐

