Problèmes d’interopérabilité entre le traitement en mode batch et le modèle de mémoire de grande page
Cet article vous aide à résoudre les problèmes de performances et de stabilité qui proviennent de l’utilisation du traitement en mode batch sur columnstore et rowstore avec un modèle de mémoire de page volumineux dans SQL Server.
Version de produit d’origine : SQL Server 2012, SQL Server 2014, SQL Server 2016, SQL Server 2017, SQL Server 2019, SQL Server 2022
Numéro de base de connaissances d’origine : 3210239
Symptômes
Dans une instance de SQL Server, vous utilisez l’indicateur de trace 834 ou l’indicateur de trace 876 comme indicateur de démarrage. Vous avez peut-être effectué cette opération pour activer les allocations de pages volumineuses par le gestionnaire de mémoire SQL Server pour améliorer les performances de l’instance 64 bits.
Vous utilisez les index columnstore ou le traitement en mode batch sur rowstore.
Dans ce scénario, vous rencontrez un ou plusieurs des problèmes suivants :
Erreur du planificateur sans rendement et vidages de mémoire associés dans le journal des erreurs SQL Server.
Les requêtes qui utilisent le traitement en mode batch peuvent rencontrer des problèmes de performances graves.
Exceptions de violation d’accès et vidages de mémoire associés dans le journal des erreurs SQL Server.
Le message d’erreur suivant peut s’afficher lors de l’exécution
sp_createstats
:There is insufficient system memory in resource pool 'default' to run this query
Solution de contournement
Pour atténuer ces problèmes, essayez l’une ou l’autre des deux méthodes suivantes :
Désactivez le modèle de mémoire de grande page en supprimant l’indicateur de trace 834 (
-T834
) des paramètres de démarrage de SQL Server sur l’instance SQL Server. Lorsque vous effectuez cette étape, SQL Server cesse d’utiliser unlarge page
modèle de mémoire et revient à un modèle oulock pages
à uneconventional
mémoire.Si vous n’utilisez pas d’index columnstore dans votre serveur SQL Server et que vous rencontrez les symptômes décrits, vous pouvez désactiver le mode batch sur rowstore au niveau de la base de données à l’aide
ALTER DATABASE SCOPED CONFIGURATION SET BATCH_MODE_ON_ROWSTORE = OFF
de . Pour plus d’informations, consultez ALTER DATABASE SCOPED CONFIGURATION.