在2022年SQL Server,具有 In-Memory OLTP的資料庫事務歷史記錄檔成長
徵狀
當您的資料庫在 2022 SQL Server 啟用記憶體內部 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
為長時間截斷的原因。 這個值表示事務歷史記錄正在等候 In-Memory OLTP (先前稱為 Hekaton) 檢查點發生。 它建議檢查點作業延遲,可能會影響效能或記錄檔成長。當您使用 SQL Server 動態管理檢視 (DMV) sys.dm_db_xtp_checkpoint_stats來收集資訊並針對此問題進行疑難解答時,數據行
outstanding_checkpoint_count
會長時間顯示非零值。 這表示檢查點不會有效率地發生,可能會影響效能和記錄檔成長。
原因
SQL Server 2022 引進了可改善大型記憶體伺服器記憶體管理的新功能,以減少記憶體不足的情況。 這項變更中的已知問題有時會導致徵 兆 一節中所述的行為。
解決方案
若要解決此問題,請遵循下列步驟:
- 新增 -T9810 作為 SQL Server 實例的啟動參數。
- 重新啟動 實例。
- 發出檢查點、進行記錄備份、觀察
log_reuse_wait_desc
,並視需要壓縮記錄以回收空間。
其他相關資訊
追蹤旗標 9810 會停用 In-Memory OLTP 引擎,避免回收線程本機記憶體 (TLS) 記憶體,還原為 SQL Server 2019 的行為。
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應