清空資料表 - Amazon Redshift

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

清空資料表

Amazon Redshift 可以自動排序和對背景中的資料表執行VACUUMDELETE操作。如要在載入或一系列的累加式更新之後清理資料表,您也可以對整個資料庫或個別資料表執行 VACUUM 命令。

注意

只有具有必要資料表權限的使用者才能有效地清除資料表。如果 VACUUM 在沒有必要的資料表許可的情況下執行,則操作已成功完成,但沒有效果。如需有效執行 的有效資料表許可清單VACUUM,請參閱 VACUUM

因此,我們建議視需要清空個別資料表。我們也建議使用此方法,因為清空整個資料庫可能會是相當耗費資源的操作。

自動資料表排序

Amazon Redshift 會在背景中自動排序資料,以依據其排序索引鍵的順序維護資料表資料。Amazon Redshift 會追蹤您的掃描查詢,以判斷資料表中的哪些區段適合排序。

取決於系統上的載入,Amazon Redshift 會自動啟動排序。此自動排序可減少執行VACUUM命令以保持資料排序金鑰順序的需求。如果您需要資料完全依排序索引鍵順序排序,例如在大量資料載入之後,您仍然可以手動執行VACUUM命令。若要判斷您的資料表是否會因執行 VACUUM 而受益SORT,請監控 中的資料vacuum_sort_benefitSVV_TABLE_INFO

Amazon Redshift 追蹤會掃描每個資料表上使用排序索引鍵的查詢。Amazon Redshift 會估計掃描及篩選每個資料表資料獲得改善的最大百分比 (如果資料表已完全排序的話)。您可以在 SVV_TABLE_INFO 中的 vacuum_sort_benefit 資料行中看見此估計。您可以使用此欄和 unsorted欄,來判斷何時查詢可以從資料表VACUUMSORT上手動執行中受益。unsorted 資料行反映了資料表的實體排序順序。vacuum_sort_benefit 資料欄會指定手動執行 排序資料表的影響VACUUMSORT。

例如,考量以下查詢:

select "table", unsorted,vacuum_sort_benefit from svv_table_info order by 1;
table | unsorted | vacuum_sort_benefit -------+----------+--------------------- sales | 85.71 | 5.00 event | 45.24 | 67.00

針對 “sales” 資料表,即使資料表約 86% 是實體未排序的,因 86% 未排序而造成的查詢效能影響也只有 5%。這可能是因為查詢只存取了資料表的一小部分,或是存取資料表的查詢非常少。針對 “event” 資料表,該資料表約 45% 是實體未排序的。但 67% 的查詢效能影響指出查詢可能存取了資料表的較大部分,或是存取資料表的查詢數相當龐大。資料表「事件」可能受益於執行 VACUUM SORT。

自動清空刪除

當您執行刪除時,資料列會標示為要刪除,但不會移除。Amazon Redshift 會根據資料庫資料表中已刪除的資料列數目,自動在背景執行VACUUMDELETE操作。Amazon Redshift 會將 排程VACUUMDELETE在負載減少期間執行,並在負載過高期間暫停操作。

VACUUM 頻率

您應該根據需求時常進行清空,才能保有一致的查詢效能。在決定執行VACUUM命令的頻率時,請考慮以下因素:

  • 在叢集上預期活動最少VACUUM的期間執行,例如晚上或指定的資料庫管理時段。

  • 在維護時段之外執行VACUUM命令。如需詳細資訊,請參閱排程維護時段

  • 大量未排序的區域會造成較長的清空時間。如果您延遲清空,清空會耗費更長時間,因為必須重新整理更多資料。

  • VACUUM 是一項 I/O 密集型操作,因此完成真空所需的時間越長,它對叢集上執行的並行查詢和其他資料庫操作的影響就越大。

  • VACUUM 使用交錯排序的資料表需要更長的時間。如要評估是否必須重新排序交錯的資料表,請查詢 SVV_INTERLEAVED_COLUMNS 檢視。

排序階段和合併階段

Amazon Redshift 會在兩個階段中執行清空操作:首先,排序未排序區域中的資料列,然後在必要時,將資料表尾端新排序的資料列與現有資料列合併。清空大型資料表時,清空操作會以一系列的步驟進行,其中包含遞增排序,接著是合併。如果操作失敗或如果 Amazon Redshift 在清空期間離線,部分清空的資料表或資料庫將處於一致的狀態,但您將必須手動重新開始清空操作。遞增排序會遺失,但不需要再次清空失敗之前認可的合併資料列。如果未排序的區域很大,損失的時間可能會很可觀。如需排序和合併階段的相關資訊,請參閱減少合併資料列的磁碟區

使用者可以在清空資料表時加以存取。您可以在將資料表清空時執行查詢和寫入操作,但同時執行 DML和 真空執行時,兩者可能需要更長的時間。如果您在真空期間執行 UPDATE和 DELETE陳述式,系統效能可能會降低。增量合併會暫時封鎖並行UPDATE和DELETE操作,而 UPDATE 和 DELETE操作則會依序暫時封鎖受影響資料表上的增量合併步驟。DDL 操作,例如 ALTER 會遭到封鎖TABLE,直到真空操作完成資料表為止。

注意

控制其運作VACUUM方式的各種修改程式。您可以根據當前需求,使用這些修飾詞來制定清空操作。例如,使用 會VACUUMRECLUSTER縮短真空操作,方法是不執行完全合併操作。如需詳細資訊,請參閱VACUUM

清空閾值

根據預設, 會VACUUM略過任何資料表的排序階段,其中已排序資料表列的 95% 以上。跳過排序階段可以大幅改善VACUUM效能。若要變更單一資料表的預設排序閾值,請在執行VACUUM命令時包含資料表名稱和 TO 閾值PERCENT參數。

清空類型

如需不同清空類型的詳細資訊,請參閱 VACUUM