批次模式處理與大型頁面記憶體模型之間的互操作性問題
本文可協助您解決在 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。