分享方式:


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

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

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

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

效能考量

每個更新和刪除都會記錄在內部記憶體最佳化歷程記錄資料表中。 如果工作負載大量使用這兩項作業,則可能會遇到非預期的記憶體使用量。 為此我們建議您考量以下幾點︰

  • 請勿在單一步驟中從目前的資料表執行大量刪除。 請考量手動叫用資料清除 (使用 sp_xtp_flush_temporal_history) 分批刪除資料,或在 SYSTEM_VERSIONING = OFF 的情況下刪除資料。

  • 不要一次執行大量資料表更新作業,因為這樣做可能會導致記憶體使用量是更新非記憶體最佳化時態表所需記憶體數量的兩倍。 由於資料排清工作會定期執行,以確保內部暫存表格的記憶體使用量在預期界限內維持穩定狀態,因此會暫時有兩倍的記憶體使用量。 界限是目前時態表記憶體使用量的 10%。 請考量分批或在 SYSTEM_VERSIONING = OFF 的情況下執行大量更新,例如使用更新以設定新增資料行的預設值。

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

請考量使用叢集資料行存放區作為以磁碟為基礎歷程記錄資料表的儲存選項,尤其是在您預計對使用彙總或視窗型函數的歷史資料執行分析查詢時。 在此案例中,叢集資料行存放區索引是歷程記錄資料表的最佳選擇。 叢集資料行存放區索引提供良好的資料壓縮,並以「易於插入」的方式運作,與產生記錄資料的方式一致。