記憶體最佳化的系統版本設定時態表效能

適用於:SQL Server 2016 (13.x) 和更新版本Azure SQL 受控執行個體

本文討論使用系統版本化記憶體最佳化時序表時的特定效能考量。

當您將系統版本設定新增至現有的非時態表時,因為歷程記錄資料表會自動更新,所以預期會有更新和刪除作業的相關效能影響。

效能考量

每個更新和刪除都會記錄在內部記憶體最佳化歷程記錄資料表中。 如果你的工作負載大量使用這兩個操作,可能會遇到意想不到的記憶體消耗。 請考慮下列事項:

  • 請勿在單一步驟中從目前的資料表執行大量刪除。 考慮分多個批次刪除資料,並在批次之間使用 sp_xtp_flush_temporal_history 手動執行資料排清,或在 SYSTEM_VERSIONING = OFF 時進行。

  • 不要一次進行大量資料表更新,因為更新非時間記憶體優化的資料表可能會佔用兩倍的記憶體。 這種記憶體消耗加倍的情況是暫時的,因為資料排清工作會定期執行,在穩定狀態下將內部暫存表格的記憶體使用量維持在預期範圍內。 界限是目前時態表記憶體使用量的 10%。 請考慮分批進行大量更新,或在 SYSTEM_VERSIONING = OFF 時進行,例如使用更新來設定新增加資料行的預設值。

您無法設定資料排清工作的啟用期間,但您可以視需要手動執行 sp_xtp_flush_temporal_history

考慮使用叢集欄位儲存作為磁碟式歷史資料表的儲存選項,特別是如果你打算對使用彙總或視窗功能的歷史資料執行分析查詢。 在那種情況下,叢集資料行存放區索引是您的歷程記錄資料表的最佳選擇。 叢集資料行存放區索引提供良好的資料壓縮,並呈現有利於插入的特性,這與歷史資料的產生方式一致。