Problemas de interoperabilidad entre el procesamiento por lotes y el modelo de memoria de página grande
Este artículo le ayuda a resolver los problemas de rendimiento y estabilidad que surgen del uso del procesamiento por lotes en el almacén de columnas y el almacén de filas con un modelo de memoria de página grande en SQL Server.
Versión original del producto: SQL Server 2012, SQL Server 2014, SQL Server 2016, SQL Server 2017, SQL Server 2019, SQL Server 2022
Número de KB original: 3210239
Síntomas
En una instancia de SQL Server, se usa la marca de seguimiento 834 o la marca de seguimiento 876 como marca de inicio. Es posible que haya realizado esta operación para habilitar las asignaciones de páginas grandes por parte del administrador de memoria de SQL Server para mejorar el rendimiento de la instancia de 64 bits.
Los índices de almacén de columnas o el procesamiento por lotes se usan en el almacén de filas.
En este escenario, experimentará uno o varios de los siguientes problemas:
Error del Programador que no produce resultados y volcados de memoria asociados en el registro de errores de SQL Server.
Las consultas que usan el procesamiento en modo por lotes pueden encontrarse con graves problemas de rendimiento.
Excepciones de infracción de acceso y volcados de memoria asociados en el registro de errores de SQL Server.
Es posible que vea el siguiente mensaje de error al ejecutar
sp_createstats
:There is insufficient system memory in resource pool 'default' to run this query
Solución alternativa
Para mitigar estos problemas, pruebe o ambos de los dos métodos siguientes:
Deshabilite el modelo de memoria de página grande quitando la marca de seguimiento 834 (
-T834
) de SQL Server parámetros de inicio en la instancia de SQL Server. Al completar este paso, SQL Server deja de usar unlarge page
modelo de memoria y vuelve a unconventional
modelo de memoria olock pages
.Si no usa índices de almacén de columnas en el SQL Server y experimenta los síntomas descritos, puede deshabilitar el modo por lotes en el almacén de filas en el nivel de base de datos mediante
ALTER DATABASE SCOPED CONFIGURATION SET BATCH_MODE_ON_ROWSTORE = OFF
. Para obtener más información, vea ALTER DATABASE SCOPED CONFIGURATION.