存留時間 (TTL) 可讓您設定政策,定期從 Spanner 資料表刪除資料。移除不需要的資料:
- 降低儲存空間和備份成本。
- 減少資料庫必須掃描的資料列數量 (適用於部分查詢),進而提高查詢效能。
- 有助於遵守法規或業界規範,限制特定類型資料的保留時間。
TTL 非常適合用於定期清除活動。這項程序會在背景持續執行,定期分批刪除符合條件的資料。通常會在到期日後的 72 小時內刪除資料。每次刪除作業都需要在資料庫的備用資源中複製主鍵,因此會產生複製費用。 詳情請參閱「資料複製定價」。 TTL 不會立即使資料失效,也不會在資料符合刪除條件時,從查詢中隱藏資料。TTL 也不會在插入資料時檢查資料,因此不會阻止您插入時間戳記過期的資料列。
TTL 的設計宗旨是盡量減少對其他資料庫工作負載的影響。TTL 清除程序會在背景以系統低優先順序執行。與使用者查詢相比,這項功能可更有效率地分配工作,並運用可用的執行個體資源,而且還包含重試邏輯,確保能完成端對端清除作業,同時將處理負擔降到最低。
另一個背景壓縮程序會回收已刪除資料列的儲存空間,通常會在七天內完成。
TTL 的運作方式
您可以在資料庫結構定義中定義資料列刪除政策,為 Spanner 資料表設定存留時間。這項政策可讓 Spanner 定期刪除不需要的資料。存留時間政策具有下列特性:
- 每個資料表都可以有自己的政策。
- 每個資料表只能指定一項存留時間政策。
- GoogleSQL 方言資料庫和 PostgreSQL 方言資料庫的 TTL 設定方式不同。
- 存留時間政策不會刪除時間戳記設為
NULL
的資料列。 - 系統在下一個 TTL 刪除週期偵測到時間戳記過期的插入資料時,就會清除這些資料。
使用 GoogleSQL 設定 TTL
使用 GoogleSQL 時,您可以指定時間戳記和間隔,定義資料列刪除政策,判斷資料列何時符合刪除條件,例如上次更新日期加上 30 天。
背景系統程序每天都會檢查符合資格的資料列。系統會將實際刪除作業平行化,並在內部儲存資料的位置附近執行批次作業。每個批次都會在各自的交易中執行,且時間戳記一致。 因此,特定批次中的資料列,以及任何索引和交錯子項,都會以原子方式刪除。不過,批次刪除作業會在不同交易中進行。
這項非同步背景程序需要一段時間才能完成,因此從符合資格到刪除之間會有延遲。延遲時間通常不到 72 小時。因此,資料列的 TTL 過期後,資料列最多可能仍會在資料表中保留三天。舉例來說,如果資料表設有資料列刪除政策,規定刪除超過四天的資料列,則資料表可能也會包含最多七天的資料列,以及較舊且無法刪除的資料列。
如需建立 GoogleSQL 資料列刪除政策的逐步操作說明,請參閱「建立存留時間政策」。
搭配 PostgreSQL 使用 TTL
使用 PostgreSQL 時,資料庫擁有者可以在 CREATE TABLE
或 ALTER TABLE
陳述式中使用 TTL INTERVAL
子句,定義資料列刪除政策。
如要在 PostgreSQL 資料表上設定資料列刪除政策,資料表必須含有資料類型為 TIMESTAMPTZ
的資料欄。TTL INTERVAL
子句會使用這個資料欄,設定資料列符合刪除資格的時間間隔規格。
子句的評估結果必須是整數天數。舉例來說,'3
DAYS'
和 '4 DAYS 2 MINUTES - 2 MINUTES'
可以使用,但 '4 DAYS 3
MINUTES'
不行,系統會傳回錯誤。您無法使用負數。
TTL 垃圾收集作業會在背景持續刪除符合條件的資料列。 由於這是非同步背景程序,因此從符合資格到刪除之間會有延遲。表格可能包含符合存留時間刪除條件的資料列,但存留時間尚未完成。通常延遲時間不會超過 72 小時。
如需建立 PostgreSQL 資料列刪除政策的操作說明,請參閱「建立 TTL 政策」。
備份與存留時間
還原備份
從備份還原資料庫時,系統會自動捨棄來源資料庫中設定的所有資料列刪除政策。這樣一來,Spanner 就不會在備份還原後立即刪除過期資料。因此,您必須手動重新設定 TTL。
資料一致性
備份是指特定時間點 (version_time
) 的資料一致性快照。備份內容可能包含符合 TTL 刪除條件,但 TTL 尚未完成的資料列。同樣地,Dataflow 匯出工作會在固定時間戳記讀取整個資料表。
稽核
TTL 支援透過變更串流稽核刪除作業。追蹤資料庫 TTL 變更的變更串流資料記錄,其 transaction_tag
欄位會設為 RowDeletionPolicy
,而 is_system_transaction
欄位則會設為 true
。然後,變更串流讀取器就能根據用途,篩除所有 TTL 記錄,或篩除 TTL 記錄以外的所有記錄。請參閱使用 Beam 依交易標記篩選的範例。
後續步驟
- 瞭解如何使用 TTL 管理資料保留時間。
- 瞭解 TTL 指標和監控。