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

如何查看Amazon Redshift中特定表的Vacuum和Analyze命令执行历史?

查看Amazon Redshift特定表的Vacuum和Analyze操作历史

当然可以!Redshift提供了几个系统视图和日志表,能帮你精准追踪特定表上执行过的Vacuum和Analyze命令,下面分两种实用方法来介绍:

方法1:使用专门的操作日志视图

Redshift内置了两个专门记录这类维护操作的系统表,直接查它们效率最高:

  • stl_vacuum:存储所有Vacuum操作的核心执行信息
  • stl_analyze:存储所有Analyze操作的核心执行信息

这两个表默认只记录成功完成的操作(如果要排查失败的任务,可以关联stl_error表查询)。需要注意的是,它们用table_id标识表,所以得结合svv_table_info视图把表名转换成对应的ID,或者直接关联查询。

查询特定表的Vacuum历史示例:

SELECT
  v.starttime,
  v.endtime,
  v.status,
  v.rows_deleted,
  v.rows_reclaimed,
  t.table_name
FROM stl_vacuum v
JOIN svv_table_info t ON v.table_id = t.table_id
WHERE t.table_name = 'your_target_table' -- 替换成你的目标表名
ORDER BY v.starttime DESC;

查询特定表的Analyze历史示例:

SELECT
  a.starttime,
  a.endtime,
  a.status,
  a.rows_processed,
  t.table_name
FROM stl_analyze a
JOIN svv_table_info t ON a.table_id = t.table_id
WHERE t.table_name = 'your_target_table' -- 替换成你的目标表名
ORDER BY a.starttime DESC;

这些查询会返回操作的起止时间、执行状态、处理/回收行数等关键指标,能快速了解维护操作的效果。

方法2:通过查询日志追踪完整命令上下文

如果你需要查看带参数的完整命令(比如VACUUM FULL、ANALYZE specific_column这类带特殊参数的操作),可以结合stl_query和stl_querytext这两个视图——所有在Redshift上执行的SQL命令都会被记录在这里。

查询特定表的Vacuum/Analyze完整命令示例:

SELECT
  q.starttime,
  q.endtime,
  u.usename AS executor,
  qt.querytext
FROM stl_query q
JOIN stl_querytext qt ON q.queryid = qt.queryid
JOIN pg_user u ON q.userid = u.usesysid
WHERE qt.querytext ILIKE '%VACUUM%your_target_table%' -- 替换表名
   OR qt.querytext ILIKE '%ANALYZE%your_target_table%'
ORDER BY q.starttime DESC;

这个查询能帮你找到执行命令的用户、完整的SQL语句,甚至可以过滤出特定参数的操作,适合需要排查具体执行细节的场景。

额外注意事项

  • 权限要求:你需要拥有这些系统表的SELECT权限,通常超级用户或者被授予SELECT ON ALL TABLES IN SCHEMA pg_catalog权限的用户才能访问。
  • 数据保留期限:Redshift的系统日志默认有保留时间(通常7-30天,取决于集群配置),超过期限的记录会被自动清理,若需长期留存,建议定期导出到S3或其他存储系统。
  • 大小写问题:Redshift表名默认小写,查询时注意匹配,或者用ILIKE忽略大小写避免遗漏。

内容的提问来源于stack exchange,提问作者dark horse

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:20:58