STL_VACUUM - Amazon Redshift

STL_VACUUM

显示已真空化的表的行和数据块统计数据。

该视图显示了特定于每个 vacuum 操作开始和完成时的信息,并演示了运行此操作的好处。有关运行该命令的要求的信息,请参阅 VACUUM 命令描述。

STL_VACUUM 仅对超级用户可见。有关更多信息,请参阅 系统表和视图中的数据可见性

此表中的部分或全部数据也可以在 SYS 监控视图 SYS_VACUUM_HISTORY 中找到。SYS 监控视图中的数据经过格式化处理,便于使用和理解。我们建议您使用 SYS 监控视图进行查询。

表列

列名称 数据类型 描述
userid integer 生成该条目的用户的 ID。
xid bigint VACUUM 语句的事务 ID。您可以将此表联接到 STL_QUERY 视图以查看为某一给定 VACUUM 事务运行的各个 SQL 语句。如果您将整个数据库真空化,则将在单独的事务中将每个表真空化。
table_id integer 表 ID。
status character(30)

每个表的 VACUUM 操作的状态。可能的值包括:

  • Started

  • Started Delete Only

  • Started Delete Only (Sorted >= nn%)

    只为 VACUUM FULL 启动了删除阶段。表的排序程度已达到或超出排序阈值,因此跳过了排序阶段。

  • Started Sort Only

  • Started Ranged Partition

  • Started Reindex

  • Finished

    表完成操作的时间。要了解某一特定表执行 vacuum 操作的时长,可以用特定事务 ID 和表 ID 的“Finished”时间减去“Started”时间。

  • Skipped

    表已完全有序且没有带删除标记的行,因此跳过该表。

  • Skipped (delete only)

    指定了 DELETE ONLY,但没有带删除标记的行,因此跳过该表。

  • Skipped (sort only)

    指定了 SORT ONLY,但表已完全有序,因此跳过该表。

  • Skipped (sort only, sorted>=xx%)

    指定了 SORT ONLY,但表的排序程度已达到或超出排序阈值,因此跳过该表。

  • Skipped (0 rows)

    因为表是空的,因此已跳过表。

  • VacuumBG

    在后台执行了自动 vacuum 操作。自动执行这些操作时,此状态先于其他状态。例如,自动执行的 delete only vacuum 操作将具有状态为 [VacuumBG] Started Delete Only 的起始行。

有关 VACUUM 排序阈值设置的更多信息,请参阅 VACUUM

rows bigint 表中的行加上仍存储在磁盘上的所有已删除的行(正在等待执行 vacuum 操作)的实际数量。此列显示带有 Started 状态的行开始 vacuum 操作之前的计数以及带有 Finished 状态的行完成 vacuum 操作之后的计数。
sortedrows integer 表中已排序的行的数量。此列显示在“状态”列中具有 Started 状态的行开始 vacuum 操作之前的计数,以及在“状态”列中具有 Finished 状态的行完成 vacuum 操作之后的计数。
blocks integer 用于存储 vacuum 操作之前的表数据(带有 Started 状态的行)和 vacuum 操作之后的表数据(Finished 列)的数据块的总数。每个数据块使用 1 MB。
max_merge_partitions integer 此列用于性能分析并表示 vacuum 可在每个合并阶段迭代中为表处理的分区的最大数量。(Vacuum 将未排序的区域分为一个或多个已排序的分区。根据表中的列数和当前的 Amazon Redshift 配置,合并阶段可在一个合并迭代中处理最大数量的分区。如果已排序分区的数量超出了合并分区的最大数量,合并阶段仍然有效,但将需要更多合并迭代。)
eventtime timestamp 当 vacuum 操作开始或完成时。
reclaimable_rows bigint 当前 cutoff_xid 的可回收行数。此列显示了 Redshift 在对状态为 Started 的行开始 vacuum 前的估计可回收行数,以及在对状态为 Finished 的行完成 vacuum 后剩余的可回收行的实际数量。
reclaimable_space_mb bigint 当前 cutoff_xid 的可回收空间(以 MB 为单位)。此列显示了 Redshift 在对状态为 Started 的行开始 vacuum 前的估计可回收空间量,以及在对状态为 Finished 的行完成 vacuum 后剩余的可回收空间的实际量。
cutoff_xid bigint VACUUM 操作的截止事务 ID。截止后的任何事务均不包含在 VACUUM 操作中。
is_recluster 整数 如果为 1 (true),则 VACUUM 操作执行重新聚类算法,如果为 0 (false),则不执行此算法。

示例查询

以下查询报告表 108313 的 vacuum 统计数据。此表在一系列插入和删除后已执行 vacuum 操作。

select xid, table_id, status, rows, sortedrows, blocks, eventtime, reclaimable_rows, reclaimable_space_mb from stl_vacuum where table_id=108313 order by eventtime; xid | table_id | status | rows | sortedrows | blocks | eventtime | reclaimable_rows | reclaimable_space_mb -------+----------+-------------------------+------+------------+--------+----------------------+------------------+---------------------- 14294 | 108313 | Started | 1950 | 408 | 28 | 2016-05-19 17:36:01 | 984 | 17 14294 | 108313 | Finished | 966 | 966 | 11 | 2016-05-19 18:26:13 | 0 | 0 15126 | 108313 | Skipped(sorted>=95%) | 966 | 966 | 11 | 2016-05-19 18:26:38 | 0 | 0

在 VACUUM 启动时,表包含了存储在 28 个 1MB 数据块中的 1,950 行。Amazon Redshift 估计,它可以通过 vacuum 操作回收 984 行或 17 个数据块的磁盘空间。

在状态为“完成”的行中,ROWS 列显示值 966,而 BLOCKS 列值为 11,低于 28。vacuum 回收了估计的磁盘空间量,在 vacuum 操作完成后,没有剩余可回收的行或空间。

在排序阶段(事务 15126),vacuum 无法跳过此表,因为行是按排序键顺序插入的。

以下示例显示在大型 INSERT 操作之后,针对 SALES 表(在此示例中为表 110116)的 SORT ONLY vacuum 操作的统计数据:

vacuum sort only sales; select xid, table_id, status, rows, sortedrows, blocks, eventtime from stl_vacuum order by xid, table_id, eventtime; xid |table_id| status | rows |sortedrows|blocks| eventtime ----+--------+-----------------+-------+----------+------+-------------------- ... 2925| 110116 |Started Sort Only|1379648| 172456 | 132 | 2011-02-24 16:25:21... 2925| 110116 |Finished |1379648| 1379648 | 132 | 2011-02-24 16:26:28...