STL_VACUUM - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

STL_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

    已對資料表完成操作的時間。若要了解清空作業已對特定資料表花費了多長時間,請從特定交易 ID 和資料表 ID 的完成時間中減去啟動時間。

  • Skipped

    已略過資料表,因為已完全排序資料表,而且未標示任何資料列進行刪除。

  • Skipped (delete only)

    已略過資料表,因為已指定 DELETE ONLY,而且未標示任何資料列進行刪除。

  • Skipped (sort only)

    已略過資料表,因為已指定 SORT ONLY,而且已完全排序資料表。

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

    已略過資料表,因為已指定 SORT ONLY,而且排序的資料表已達或超過排序閾值。

  • Skipped (0 rows)

    已略過資料表,因為它是空的。

  • VacuumBG

    自動清空操作會在背景執行。當其他狀態自動執行時,此狀態會附加在其他狀態之前。例如,自動執行的僅刪除清空將具有狀態 [VacuumBG] Started Delete Only 的起始列。

如需 VACUUM 排序閾值設定的相關資訊,請參閱 VACUUM

rows bigint 資料表中的實際資料列數目加上任何仍在磁碟上儲存的已刪除資料列 (等待清空)。此欄顯示在對狀態為 Started 的資料列啟動清空之前的計數,以及在對狀態為 Finished 的資料列啟動清空之後的計數。
sortedrows integer 資料表中已排序的資料列數目。此欄顯示在對 Status 欄中具有 Started 的資料列啟動清空之前的計數,以及在對 Status 欄中具有 Finished 的資料列啟動清空之後的計數。
blocks integer 在清空操作 (狀態為 Started 的資料列) 之前,以及在清空操作 (Finished 欄) 之後,用來儲存資料表資料的資料區塊總數。每個資料區塊都使用 1 MB。
max_merge_partitions integer 會使用此欄位來分析表現並表示分割區數上限,也就是清空可以根據合併階段反覆運算為資料表處理的分割區數上限。(清空會將未排序的區域排序為一個或多個已排序的分割區。根據資料表中的欄數和目前的 Amazon Redshift 組態,合併階段可以在單次合併迭代中處理最大數量的分割區。如果排序分割區的數量超過合併分割區的最大數量,合併階段仍然有效,但需要更多的合併迭代。)
eventtime timestamp 清空操作啟動或完成的時間。
reclaimable_rows bigint 目前 cutoff_xid 的可回收列數。此欄顯示 Redshift 在清空開始之前對於具有 Started 狀態之列的估計可回收列數,以及在清空之後對於具有 Finished 狀態之列剩餘的實際可回收列數。
reclaimable_space_mb bigint 目前 cutoff_xid 的可回收空間 (以 MB 為單位)。此欄顯示 Redshift 在清空開始之前對於具有 Started 狀態之列的估計可回收空間量,以及在清空之後對於具有 Finished 狀態之列剩餘的實際可回收空間量。
cutoff_xid bigint VACUUM 操作的截止交易 ID。截止後的任何交易都不包括在 VACUUM 操作中。
is_recluster integer 如果為 1 (true),則 VACUUM 操作執行重新建立叢集演算法,如果為 0 (false),則不執行。

範例查詢

下列查詢報告資料表 108313 的清空統計資訊。在一系列插入和刪除之後已清空此資料表。

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 開始時,資料表包含 1,950 列,儲存在 28 個 1 MB 區塊中。Amazon Redshift 估計,透過清空操作可以回收 984 個磁碟空間,即 17 個磁碟空間區塊。

在「已完成」狀態的列中,ROWS 欄顯示的值為 966,而 BLOCKS 欄的值從 28 下降為 11。清空回收了估計的磁碟空間量,清空操作完成後沒有剩餘可回收的列或空間。

在排序階段 (交易 15126) 中,清空能夠略過資料表,因為已依排序索引鍵順序插入資料列。

下列範例會在大型 INSERT 操作之後顯示 SALES 資料表 (此範例中的資料表 110116) 上 SORT ONLY 清空的統計資訊:

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...