Limitez la mémoire maximale du serveur pour éviter la pression sur la mémoire - AWS Directives prescriptives

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Limitez la mémoire maximale du serveur pour éviter la pression sur la mémoire

Pour des raisons de performances, SQL Server ne libère pas la mémoire qu'il a déjà allouée. Lorsque SQL Server est démarré, il utilise lentement la mémoire spécifiée dans l'option min_server_memory, puis continue de croître jusqu'à atteindre la valeur spécifiée dans l'option max_server_memory. (Pour plus d'informations sur ces paramètres, consultez la section Options de configuration de la mémoire du serveur dans la documentation de SQL Server.)

La mémoire SQL Server comporte deux composants : le pool de mémoire tampon et le pool non tampon (également appelé mémoire à quitter ou MTL). La valeur de l'option max_server_memory détermine la taille du pool de mémoire tampon de SQL Server, qui comprend le cache de mémoire tampon, le cache de procédure, le cache de plan, les structures de buff et d'autres caches.

À partir de SQL Server 2012, min_server_memory et max_server_memory prennent en compte toutes les allocations de mémoire pour tous les caches, y compris,,,, et. SQLGENERAL SQLBUFFERPOOL SQLQUERYCOMPILE SQLQUERYPLAN SQLQUERYEXEC SQLOPTIMIZER SQLCLR Pour obtenir la liste complète des greffiers de mémoire sous max_server_memory, consultez sys.dm_os_memory_clerks dans la documentation de Microsoft SQL Server.

Pour vérifier la valeur actuelle de max_server_memory, utilisez la commande suivante :

$ sp_configure 'max_server_memory'

Nous vous recommandons de plafonner max_server_memory à une valeur qui n'entraîne pas de pression sur la mémoire à l'échelle du système. Il n'existe pas de formule universelle applicable à tous les environnements, mais nous avons fourni quelques directives dans cette section. max_server_memory est une option dynamique, elle peut donc être modifiée lors de l'exécution.

Comme point de départ, vous pouvez déterminer max_server_memory comme suit :

max_server_memory = total_RAM – (memory_for_the_OS + MTL)

où :

  • La mémoire du système d'exploitation est de 1 à 4 Go.

  • La MTL (mémoire à laisser) inclut la taille de la pile, qui est de 2 Mo sur des machines 64 bits par thread de travail et peut être calculée comme suit : MTL = stack_size * max_worker_threads

Vous pouvez également utiliser :

max_server_memory = total_RAM – (1 GB for the OS + memory_basis_amount_of_RAM_on_the_server)

où la quantité de mémoire RAM de base est déterminée comme suit :

  • Si la RAM du serveur est comprise entre 4 Go et 16 Go, laissez 1 Go pour 4 Go de RAM. Par exemple, pour un serveur de 16 Go, laissez 4 Go.

  • Si la RAM du serveur est supérieure à 16 Go, laissez 1 Go par 4 Go de RAM jusqu'à 16 Go et 1 Go par 8 Go de RAM au-dessus de 16 Go.

Par exemple, si un serveur dispose de 256 Go de RAM, le calcul sera le suivant :

  • 1 Go pour le système d'exploitation

  • Jusqu'à 16 Go de RAM : 16/4 = 4 Go

  • RAM restante au-dessus de 16 Go : (256-16) /8 = 30

  • Mémoire vive totale à laisser : 1 + 4 + 30 = 35 Go

  • mémoire_serveur maximale : 256 - 35 = 221 Go

Après la configuration initiale, surveillez la mémoire que vous pouvez libérer pendant une durée de charge de travail normale afin de déterminer si vous devez augmenter ou diminuer la mémoire allouée à SQL Server.

Note

Windows signale une insuffisance de mémoire à 96 Mo. Vous avez donc besoin d'une mémoire tampon, mais vous pouvez définir une valeur supérieure à 1 Go sur les serveurs plus grands dotés de 256 Go de RAM ou plus.

Pour plus d'informations, consultez le Guide de l'architecture de gestion de la mémoire dans la documentation Microsoft SQL Server.