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 操作的状态。可能的值包括:
有关 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...