使用保留原則管理歷程記錄資料
重要
Azure SQL Edge 將於 2025 年 9 月 30 日淘汰。 如需詳細資訊和移轉選項,請參閱淘汰通知。
注意
Azure SQL Edge 不再支援 ARM64 平台。
定義資料庫和基礎資料表的資料保留原則之後,背景時間計時器工作會執行,以從啟用資料保留的資料表中移除任何過時的記錄。 識別相符資料列及從資料表中將其移除的作業,會以明確的方式在系統排程和執行的背景工作中進行。 資料表資料列的過時條件會根據資料表定義中指定的 filter_column
資料行來檢查。 例如如果保留期間設定為一週,則符合清除資格的資料表資料列會滿足下列條件之一:
- 如果篩選資料行使用 DATETIMEOFFSET 資料類型,則條件為
filter_column < DATEADD(WEEK, -1, SYSUTCDATETIME())
- 否則,條件為
filter_column < DATEADD(WEEK, -1, SYSDATETIME())
資料保留清除階段
資料保留清除作業包含兩個階段:
- 探索:在此階段中,清除作業會識別使用者資料庫內的所有資料表,以建置要清除的清單。 探索會每天執行一次。
- 清除:在這個階段中,清除會針對在探索階段中識別出含有限資料保留的所有資料表執行。 如果無法在資料表上執行清除作業,則會在目前的執行中略過該資料表,並在下一個反覆項目中重試。 清除期間會使用下列原則:
- 如果另一個異動鎖定過時的資料列,則會略過該資料列。
- 清除會搭配預設的鎖定逾時 (5 秒) 執行。 如果無法在逾時期間內取得資料表上的鎖定,則會在目前的執行中略過資料表,並在下一個反覆項目中重試。
- 如果在清除資料表期間發生錯誤,則會略過該資料表,並在下一個反覆項目中挑選出來。
手動清除
取決於資料表上的資料保留設定,以及資料庫上工作負載的本質,自動清除執行緒可能不會在其執行期間完全移除所有過時的資料列。 為了允許使用者手動移除過時的資料列,sys.sp_cleanup_data_retention
預存程序已在 Azure SQL Edge 中引進。
此預存程序採用三個參數:
@schema_name
:資料表擁有的結構描述名稱。 必要。@table_name
:正在執行手動清除的資料表名稱。 必要。@rowcount
:輸出變數。 傳回手動清除預存程序清除的資料列數目。 選擇性。
如需詳細資訊,請參閱 sys.sp_cleanup_data_retention (Transact-SQL)。
下列範例顯示執行資料表 dbo.data_retention_table
的手動清除預存程序。
DECLARE @rowcnt BIGINT;
EXEC sys.sp_cleanup_data_retention 'dbo', 'data_retention_table', @rowcnt OUTPUT;
SELECT @rowcnt;
如何刪除過時的資料列
清除處理程序取決於資料表的索引配置。 建立的背景工作可利用有限的保留期間為所有資料表執行過時資料清除。 資料列存放區 (堆積或 B 型樹狀結構) 索引的清除邏輯會以較小區塊刪除過時資料列 (最多 10,000),以儘量減輕資料庫記錄檔和 I/O 子系統的壓力。 雖然清除邏輯會利用必要的 B 型樹狀結構索引,但無法絶對保證早於保留期間之資料列的刪除順序。 換句話說,請勿在應用程式中對清除順序採用任何相依性。
警告
如果是堆積和 B 型樹狀結構索引,資料保留會在基礎資料表上執行刪除查詢,這可能會與資料表上的刪除觸發程序發生衝突。 您應該從資料表中移除刪除觸發程序,或避免在具有刪除 DML 觸發程序的資料表上使用資料保留。
叢集資料行存放區索引清除工作可一次移除整個資料列群組 (每個通常包含 1 百萬個資料列),這是一個有效率的方法,特別是當資料高速產生並逾期時。
卓越的資料壓縮和有效率的保留清除,可讓叢集資料行存放區索引成為您的工作負載快速產生大量資料時的完美選擇。
監視資料保留清除
您可以在 Azure SQL Edge 中使用擴充事件來監視資料保留原則清除作業。 如需擴充事件的詳細資訊,請參閱擴充事件概觀。
下列擴充事件有助於追蹤清除作業的狀態。
名稱 | 描述 |
---|---|
data_retention_task_started | 清除具備保留原則的資料表背景工作開始時,即會發生。 |
data_retention_task_completed | 清除具備保留原則的資料表背景工作結束時,即會發生。 |
data_retention_task_exception | 清除具備保留原則的資料表背景工作失敗,且不在這些資料表專屬的保留清理程序之內時,即會發生。 |
data_retention_cleanup_started | 清除具備資料保留原則的資料表程序開始時,即會發生。 |
data_retention_cleanup_exception | 清除具備保留原則的資料表程序失敗時,即會發生。 |
data_retention_cleanup_completed | 清除具備資料保留原則的資料表程序結束時,即會發生。 |
此外,已將名為 RING_BUFFER_DATA_RETENTION_CLEANUP
的新通道緩衝區類型新增至 sys.dm_os_ring_buffers
動態管理檢視。 此檢視可用來監視資料保留清除作業。