如何查看Redshift自动排序键模式下当前使用的排序键?
查看Redshift自动排序键当前生效值的可行方法
方法1:查询SVV_AUTO_WORKLOAD_REPORT视图
这个视图专门跟踪Redshift自动表优化的操作历史,包括排序键的调整记录,能直接获取当前生效的自动排序键信息。
SELECT table_id, schema_name, table_name, action_type, action_details, status, created_time FROM svv_auto_workload_report WHERE schema_name = '你的 schema 名' AND table_name = '你的表名' ORDER BY created_time DESC;
其中action_details字段会明确显示调整后的排序键,比如"Set sort key to (date_column)"。
方法2:使用SVL_SORTKEY_RECOMMENDATIONS视图
该视图基于近期查询负载生成排序键推荐,对于启用自动排序键的表,推荐结果通常就是当前实际生效的排序键(自动优化会自动应用最优推荐)。
SELECT schema_name, table_name, recommended_sortkey, recommendation_reason FROM svl_sortkey_recommendations WHERE schema_name = '你的 schema 名' AND table_name = '你的表名';
方法3:通过EXPLAIN分析查询执行计划
针对你的表常用的查询(尤其是带过滤条件的查询)执行EXPLAIN,查看执行计划中的扫描节点细节。如果某列是当前生效的排序键,计划中会出现类似"using sort key scan for <列名>"的提示。
EXPLAIN SELECT * FROM 你的schema.你的表 WHERE date_column = '2024-01-01';
重点关注扫描步骤的描述,确认是否使用了特定列作为排序键。
方法4:查询STL_ALTER_TABLE日志表
Redshift自动调整排序键本质是执行ALTER TABLE操作,这些操作会被记录在stl_alter_table日志中。通过查询该表可以找到最近的排序键修改记录。
SELECT query, trim(tablename) AS table_name, trim(schema) AS schema_name, starttime, endtime, trim(text) AS alter_command FROM stl_alter_table WHERE trim(schema) = '你的 schema 名' AND trim(tablename) = '你的表名' AND text LIKE '%SORTKEY%' ORDER BY starttime DESC;
alter_command字段会显示调整排序键的具体SQL语句,从中就能得知当前生效的排序键。
内容的提问来源于stack exchange,提问作者mc51
相关产品推荐
相关产品推荐

