批次模式處理與大型頁面記憶體模型之間的互操作性問題
本文可協助您解決在數據行存放區上使用批次模式處理所產生的效能和穩定性問題,以及在 SQL Server 中使用大型頁面記憶體模型的數據列存放區。
原始產品版本:SQL Server 2012、SQL Server 2014、SQL Server 2016、SQL Server 2017、SQL Server 2019、SQL Server 2022
原始 KB 編號: 3210239
徵狀
在 SQL Server 的實例中,您會使用追蹤旗標 834 或追蹤旗標 876 作為啟動旗標。 您可能已完成這項作業,以啟用 SQL Server 記憶體管理員的大型頁面配置,以改善 64 位實例的效能。
在此案例中,您會遇到下列一或多個問題:
SQL Server 錯誤記錄檔中未產生的排程器錯誤和相關聯的記憶體轉儲。
使用批次模式處理的查詢可能會遇到嚴重的效能問題。
SQL Server 錯誤記錄檔中的存取違規例外狀況和相關聯的記憶體轉儲。
當您執行
sp_createstats
時,可能會看到下列錯誤訊息:There is insufficient system memory in resource pool 'default' to run this query
因應措施
若要減輕這些問題,請嘗試下列兩種方法之一或兩種方法:
從 SQL Server 實例上的 SQL Server 啟動參數移除追蹤旗標 834 (
-T834
) ,以停用大型頁面記憶體模型。 當您完成此步驟時,SQL Server 停止使用large page
記憶體模型,並還原為conventional
或lock pages
記憶體模型。如果您未在 SQL Server 中使用資料行存放區索引,而且您遇到描述的徵兆,您可以使用 在資料庫層級停用
ALTER DATABASE SCOPED CONFIGURATION SET BATCH_MODE_ON_ROWSTORE = OFF
數據列存放區上的批次模式。 如需詳細資訊,請參閱 ALTER DATABASE SCOPED CONFIGURATION。