共用方式為


SQL Server 2022 中記憶體內部 OLTP 的資料庫事務歷史記錄檔會成長

徵兆

當您的資料庫在 SQL Server 2022 中啟用記憶體內部 OLTP 功能時,您會注意到事務歷史記錄檔會持續成長。 此外,SQL Server 錯誤記錄檔可能有類似 的 Close thread is falling behind: 4 checkpoints outstanding訊息。

如果您重新啟動 SQL Server 實例,您可能會注意到資料庫需要很長的時間才能完成資料庫復原程式。

針對 sys.databases 和 sys.dm_db_xtp_checkpoint_stats 的問題進行疑難解答

  • 當您使用目錄檢視 sys.databases 收集資訊並針對此問題進行疑難解答時,數據行 log_reuse_wait_desc 會顯示 XTP_CHECKPOINT 為長時間截斷的原因。 這個值表示事務歷史記錄檔正在等候發生記憶體內部 OLTP(先前稱為 Hekaton) 檢查點。 它建議檢查點作業延遲,可能會影響效能或記錄檔成長。

  • 當您使用 SQL Server 動態管理檢視 (DMV) sys.dm_db_xtp_checkpoint_stats 收集資訊並針對此問題進行疑難解答時,數據行 outstanding_checkpoint_count 會顯示非零值一段時間。 它表示檢查點不會有效率地發生,可能會影響效能和記錄檔成長。

原因

SQL Server 2022 引進了可改善大型記憶體伺服器記憶體管理的新功能,以減少記憶體不足的情況。 此變更中的已知問題有時可能會導致徵兆一節中所述的行為。

解決方法

若要解決此問題,請遵循下列步驟:

  1. 將 -T9810 新增為 SQL Server 實例的啟動參數。
  2. 重新啟動 實例。
  3. 發出檢查點、進行記錄備份、觀察 log_reuse_wait_desc,並視需要壓縮記錄以回收空間。

注意

此問題已在 SQL Server 2022 的累積更新 7 中修正。

其他相關資訊

追蹤旗標 9810 會停用記憶體內部 OLTP 引擎,以回收線程本機記憶體 (TLS) 記憶體,並還原為 SQL Server 2019 的行為。