You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查看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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 11:10:05