STL_VACUUM - Amazon Redshift
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

STL_VACUUM

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

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

此视图 仅对超级用户可见。有关更多信息,请参阅 Visibility of data in system tables and views

Table columns

列名称 数据类型 Description
userid integer 这些区域有: 生成该条目的用户 ID。
xid bigint VACUUM 语句的事务 ID。您可以将此表加入到STL_Query视图,以查看针对给定真空交易运行的单个SQL语句。如果您将整个数据库真空化,则将在单独的事务中将每个表真空化。
table_id integer 这些区域有: 表 ID。
status character(30)

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

  • Started

  • Started Delete Only

  • Started Delete Only (Sorted >= nn%)

    Only the delete phase was started for a VACUUM FULL. The sort phase was skipped because the table was already sorted at or above the sort threshold.

  • Started Sort Only

  • Started Reindex

  • Finished

    Time the operation completed for the table. To find out how long a vacuum operation took on a specific table, subtract the Started time from the Finished time for a particular transaction ID and table ID.

  • Skipped

    The table was skipped because the table was fully sorted and no rows were marked for deletion.

  • Skipped (delete only)

    The table was skipped because DELETE ONLY was specified and no rows were marked for deletion.

  • Skipped (sort only)

    The table was skipped because SORT ONLY was specified and the table was already sorted fully sorted.

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

    The table was skipped because SORT ONLY was specified and the table was already sorted at or above the sort threshold.

  • Skipped (0 rows).

    The table was skipped because it was empty.

  • VacuumBG.

    An automatic vacuum operation was performed in the background.

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

rows bigint 表中的行加上仍存储在磁盘上的所有已删除的行(正在等待执行 vacuum 操作)的实际数量。此列显示带有 Started 状态的行开始 vacuum 操作之前的计数以及带有 Finished 状态的行完成 vacuum 操作之后的计数。
sortedrows integer 表中已排序的行的数量。此列显示在“Status (状态)”列中具有 Started 状态的行开始 vacuum 操作之前的计数以及在“Status (状态)”列中具有 Finished 状态的行完成 vacuum 操作之后的计数。
blocks integer 用于存储 vacuum 操作之前的表数据(带有 Started 状态的行)和 vacuum 操作之后的表数据(Finished 列)的数据块的总数。(每个数据块使用 1MB。)
max_merge_partitions integer 此列用于性能分析并表示 vacuum 可在每个合并阶段迭代中为表处理的分区的最大数量。(真空吸尘器将未分类区域排列到一个或多个分类区域。取决于表格中列和当前列的数量 Amazon Redshift 配置,合并阶段可以处理单个合并迭代中的最大分区数。如果已分类分区的数量超出合并分区的最大数量,合并阶段仍将工作,但需要更多合并迭代。)
eventtime timestamp 当 vacuum 操作开始或完成时。

Sample queries

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

select xid, table_id, status, rows, sortedrows, blocks, eventtime from stl_vacuum where table_id=108313 order by eventtime; xid | table_id | status | rows | sortedrows | blocks | eventtime -------+----------+----------------------+------------+------------+--------+--------------------- 14294 | 108313 | Started | 1950266199 | 400043488 | 280887 | 2016-05-19 17:36:01 14294 | 108313 | Finished | 600099388 | 600099388 | 88978 | 2016-05-19 18:26:13 15126 | 108313 | Skipped(sorted>=95%) | 600099388 | 600099388 | 88978 | 2016-05-19 18:26:38

在 VACUUM 启动时,表包含了存储在 280,887 个 1 MB 数据块中的 1,950,266,199 个行。在删除阶段(事务 14294)完成后,vacuum 便回收了已删除行的空间。ROWS 列将显示值 400,043,488,而 BLOCKS 列已从 280,887 个减少到 88,978 个。vacuum 回收了 191,909 个磁盘空间数据块 (191.9 GB)。

在排序阶段(事务 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...