批处理模式处理与大型页面内存模型之间的互操作性问题

本文可帮助你解决在 SQL Server 中对具有大型页面内存模型的列存储和行存储使用批处理模式处理时出现的性能和稳定性问题。

原始产品版本:SQL Server 2012、SQL Server 2014、SQL Server 2016、SQL Server 2017、SQL Server 2019、SQL Server 2022
原始 KB 编号: 3210239

症状

在此方案中,你会遇到以下一个或多个问题:

  • SQL Server错误日志中的非生成计划程序错误和关联的内存转储。

  • 使用批处理模式处理的查询可能会遇到严重的性能问题。

  • SQL Server错误日志中的访问冲突异常和关联的内存转储。

  • 运行 sp_createstats时,可能会看到以下错误消息:

    There is insufficient system memory in resource pool 'default' to run this query
    

解决方法

若要缓解这些问题,请尝试以下两种方法之一或两种方法:

  • 从 SQL Server 实例上的启动参数中删除跟踪标志 834 (-T834) SQL Server,从而禁用大型页面内存模型。 完成此步骤后,SQL Server停止使用large page内存模型,并还原为 conventionallock pages 内存模型。

  • 如果不在SQL Server中使用列存储索引,并且遇到上述症状,则可以使用 ALTER DATABASE SCOPED CONFIGURATION SET BATCH_MODE_ON_ROWSTORE = OFF在数据库级别禁用行存储的批处理模式。 有关详细信息,请参阅 ALTER DATABASE SCOPED CONFIGURATION

更多信息