server memory (options de configuration du serveur)Server Memory Server Configuration Options

S’APPLIQUE À : ouiSQL Server nonAzure SQL Database nonAzure SQL Data Warehouse nonParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Utilisez les deux options de mémoire du serveur, min server memory et max server memory, pour reconfigurer la quantité de mémoire (en mégaoctets) gérée par le Gestionnaire de mémoire de SQL Server pour un processus SQL Server utilisé par une instance de SQL ServerSQL Server.Use the two server memory options, min server memory and max server memory, to reconfigure the amount of memory (in megabytes) that is managed by the SQL Server Memory Manager for a SQL Server process used by an instance of SQL ServerSQL Server.

Le paramètre par défaut de l’option min server memory est 0 et celui de l’option max server memory est 2 147 483 647 mégaoctets (Mo).The default setting for min server memory is 0, and the default setting for max server memory is 2,147,483,647 megabytes (MB). Par défaut, SQL ServerSQL Server peut modifier dynamiquement sa configuration mémoire en fonction des ressources système disponibles.By default, SQL ServerSQL Server can change its memory requirements dynamically based on available system resources. Pour plus d’informations, consultez Gestion de la mémoire dynamique.For more information, see dynamic memory management.

La taille mémoire minimale autorisée pour max server memory est de 128 Mo.The minimum memory amount allowable for max server memory is 128 MB.

Important

Si vous affectez à max server memory une valeur trop élevée, une instance unique de SQL ServerSQL Server peut être contrainte de rivaliser avec d’autres instances de SQL ServerSQL Server hébergées sur le même hôte pour obtenir de la mémoire.Setting max server memory value too high can cause a single instance of SQL ServerSQL Server might have to compete for memory with other SQL ServerSQL Server instances hosted on the same host. Toutefois, une valeur trop faible peut entraîner des problèmes importants liés aux performances et à la sollicitation de la mémoire.However, setting this value too low could cause significant memory pressure and performance problems. Si vous affectez à max server memory la valeur minimale, vous pouvez même empêcher SQL ServerSQL Server de démarrer.Setting max server memory to the minimum value can even prevent SQL ServerSQL Server from starting. Si vous ne pouvez plus démarrer SQL ServerSQL Server après avoir changé cette option, démarrez-le au moyen de l’option de démarrage ** -f** et restaurez max server memory à sa valeur antérieure.If you cannot start SQL ServerSQL Server after changing this option, start it using the -f startup option and reset max server memory to its previous value. Pour plus d’informations, consultez Options de démarrage du service moteur de base de données.For more information, see Database Engine Service Startup Options.

SQL ServerSQL Server peut utiliser dynamiquement la mémoire ; cependant, vous pouvez configurer manuellement les options de mémoire et limiter la mémoire à laquelle SQL ServerSQL Server peut accéder.can use memory dynamically; however, you can set the memory options manually and restrict the amount of memory that SQL ServerSQL Server can access. Avant de définir la mémoire allouée à SQL ServerSQL Server, déterminez la valeur adaptée pour la mémoire : pour cela, vous devez soustraire de la mémoire physique totale la mémoire exigée par le système d’exploitation, par les allocations de mémoire non contrôlées à l’aide du paramètre max_server_memory et par toute autre instance de SQL ServerSQL Server (ainsi que par d’autres systèmes si l’ordinateur n’est pas totalement dédié à SQL ServerSQL Server).Before you set the amount of memory for SQL ServerSQL Server, determine the appropriate memory setting by subtracting, from the total physical memory, the memory required for the OS, memory allocations not controlled by the max_server_memory setting, and any other instances of SQL ServerSQL Server (and other system uses, if the computer is not wholly dedicated to SQL ServerSQL Server). Cette différence représente la mémoire maximale que vous pouvez allouer à l’instance actuelle de SQL ServerSQL Server.This difference is the maximum amount of memory you can assign to the current SQL ServerSQL Server instance.

Paramétrage manuel des options de mémoireSetting the memory options manually

Vous pouvez définir les options de serveur min server memory et max server memory pour couvrir une plage de valeurs de mémoire.The server options min server memory and max server memory can be set to span a range of memory values. Cette méthode est utile pour les administrateurs système ou de bases de données qui souhaitent configurer une instance de SQL ServerSQL Server en accord avec la mémoire exigée par d’autres applications ou d’autres instances de SQL ServerSQL Server qui s’exécutent sur le même hôte.This method is useful for system or database administrators to configure an instance of SQL ServerSQL Server in conjunction with the memory requirements of other applications, or other instances of SQL ServerSQL Server that run on the same host.

Notes

min server memory et max server memory sont des options avancées.The min server memory and max server memory options are advanced options. Si vous utilisez la procédure stockée système sp_configure pour changer ces paramètres, vous ne pouvez les modifier que si l’option show advanced options a la valeur 1.If you are using the sp_configure system stored procedure to change these settings, you can change them only when show advanced options is set to 1. Ces paramètres entrent immédiatement en vigueur, sans redémarrage du serveur.These settings take effect immediately without a server restart.

Utilisez min_server_memory pour garantir une quantité minimale de mémoire accessible au Gestionnaire de mémoire de SQL ServerSQL Server pour une instance de SQL ServerSQL Server.Use min_server_memory to guarantee a minimum amount of memory available to the SQL ServerSQL Server Memory Manager for an instance of SQL ServerSQL Server. SQL ServerSQL Server n'alloue pas immédiatement la mémoire spécifiée dans min server memory au démarrage.will not immediately allocate the amount of memory specified in min server memory on startup. Néanmoins, lorsque l’utilisation de la mémoire atteint cette valeur en raison de la charge client, SQL ServerSQL Server ne peut libérer de la mémoire à moins que la valeur min server memory ne soit réduite.However, after memory usage has reached this value due to client load, SQL ServerSQL Server cannot free memory unless the value of min server memory is reduced. Par exemple, si plusieurs instances de SQL ServerSQL Server peuvent exister simultanément sur le même ordinateur hôte, définissez min_server_memory plutôt que max_server_memory afin de réserver de la mémoire pour une instance.For example, when several instances of SQL ServerSQL Server can exist concurrently in the same host, set the min_server_memory parameter instead of max_server_memory for the purpose of reserving memory for an instance. La définition d’une valeur min_server_memory est essentielle dans un environnement virtualisé. Elle permet en effet de garantir que la sollicitation de la mémoire de l’hôte sous-jacent ne tente pas de libérer, dans le pool de tampons d’une machine virtuelle SQL ServerSQL Server invitée, une quantité de mémoire supérieure à celle nécessaire pour obtenir des performances acceptables.Also, setting a min_server_memory value is essential in a virtualized environment to ensure memory pressure from the underlying host does not attempt to deallocate memory from the buffer pool on a guest SQL ServerSQL Server virtual machine (VM) beyond what is needed for acceptable performance.

Notes

Il n’est pas garanti que SQL ServerSQL Server alloue la mémoire spécifiée dans min server memory.SQL ServerSQL Server is not guaranteed to allocate the amount of memory specified in min server memory. Si la charge sur le serveur ne nécessite jamais d’allouer la mémoire spécifiée dans min server memory, SQL ServerSQL Server s’exécute alors avec moins de mémoire.If the load on the server never requires allocating the amount of memory specified in min server memory, SQL ServerSQL Server will run with less memory.

Utilisez max_server_memory pour que le système d’exploitation ne fasse pas l’objet d’une sollicitation de la mémoire préjudiciable.Use max_server_memory to guarantee the OS does not experience detrimental memory pressure. Pour définir la configuration de la mémoire maximale du serveur, surveillez la consommation globale du processus SQL ServerSQL Server afin de déterminer les besoins en mémoire.To set max server memory configuration, monitor overall consumption of the SQL ServerSQL Server process in order to determine memory requirements. Pour obtenir des résultats plus précis pour une instance unique :To be more accurate with these calculations for a single instance:

  • Réservez 1 à 4 Go de la mémoire totale du système d’exploitation au système d’exploitation lui-même.From the total OS memory, reserve 1GB-4GB to the OS itself.
  • Ensuite, soustrayez l’équivalent des allocations de mémoire SQL ServerSQL Server potentielles en dehors du contrôle max server memory, à savoir la **taille de la pile 1 *, le nombre maximal calculé de threads de worker 2 et le paramètre de démarrage -g 3 ** (ou 256 Mo par défaut si -g n’est pas défini).Then subtract the equivalent of potential SQL ServerSQL Server memory allocations outside the max server memory control, which is comprised of stack size 1 * calculated max worker threads 2 + -g startup parameter 3 (or 256MB by default if -g is not set). Il doit rester le paramètre max_server_memory pour une installation d’instance unique.What remains should be the max_server_memory setting for a single instance setup.

1 Pour plus d’informations sur les tailles de piles de threads par architecture, consultez le guide d’architecture de gestion de la mémoire.1 Refer to the Memory Management Architecture guide for information on thread stack sizes per architecture.

2 Pour plus d’informations sur les threads de worker par défaut calculés pour un nombre donné d’UC avec affinité dans l’hôte actif, consultez la page Configurer l’option de configuration du serveur max worker threads dans la documentation.2 Refer to the documentation page on how to Configure the max worker threads Server Configuration Option, for information on the calculated default worker threads for a given number of affinitized CPUs in the current host.

3 Pour plus d’informations sur le paramètre de démarrage -g, consultez la page Options de démarrage du service moteur de base de données dans la documentation.3 Refer to the documentation page on Database Engine Service Startup Options for information on the -g startup parameter.

Comment configurer les options de mémoire à l’aide deSQL Server Management StudioSQL Server Management StudioHow to configure memory options using SQL Server Management StudioSQL Server Management Studio

Utilisez les deux options de mémoire du serveur, min server memory et max server memory, pour reconfigurer la quantité de mémoire (en mégaoctets) gérée par le Gestionnaire de mémoire de SQL ServerSQL Server pour une instance de SQL ServerSQL Server.Use the two server memory options, min server memory and max server memory, to reconfigure the amount of memory (in megabytes) managed by the SQL ServerSQL Server Memory Manager for an instance of SQL ServerSQL Server. Par défaut, SQL ServerSQL Server peut modifier dynamiquement sa configuration mémoire en fonction des ressources système disponibles.By default, SQL ServerSQL Server can change its memory requirements dynamically based on available system resources.

Pour définir une quantité fixe de mémoire :To set a fixed amount of memory:

  1. Dans l’Explorateur d’objets, cliquez avec le bouton droit sur un serveur et sélectionnez Propriétés.In Object Explorer, right-click a server and select Properties.

  2. Cliquez sur le nœud Mémoire .Click the Memory node.

  3. Sous Options mémoire du serveur, entrez la même quantité pour Mémoire minimale du serveur et Mémoire maximale du serveur.Under Server Memory Options, enter the same amount that you want for Minimum server memory and Maximum server memory.

    Utilisez les paramètres par défaut pour autoriser SQL ServerSQL Server à modifier ses besoins de mémoire de façon dynamique en fonction des ressources système disponibles.Use the default settings to allow SQL ServerSQL Server to change its memory requirements dynamically based on available system resources. Il est recommandé de définir un paramètre max server memory, comme indiqué ci-dessus.It is recommended to set a max server memory as detailed above.

Verrouiller les pages en mémoire (LPIM)Lock Pages in Memory (LPIM)

Cette stratégie Windows détermine quels comptes peuvent utiliser un processus destiné à conserver les données en mémoire physique pour éviter leur pagination en mémoire virtuelle sur le disque.This Windows policy determines which accounts can use a process to keep data in physical memory, preventing the system from paging the data to virtual memory on disk. Le verrouillage des pages en mémoire peut permettre de conserver sa réactivité au serveur lors de la pagination de la mémoire sur disque.Locking pages in memory may keep the server responsive when paging memory to disk occurs. L’option Verrouiller les pages en mémoire a la valeur ON dans les instances de SQL ServerSQL Server éditions Standard et supérieures quand le compte avec les privilèges nécessaires pour exécuter sqlservr.exe dispose du droit d’utilisateur Windows Verrouiller les pages en mémoire (LPIM).The Lock Pages in Memory option is set to ON in instances of SQL ServerSQL Server Standard edition and higher when the account with privileges to run sqlservr.exe has been granted the Windows Lock Pages in Memory (LPIM) user right.

Pour désactiver l’option Verrouiller les pages en mémoire pour SQL ServerSQL Server, supprimez le droit d’utilisateur Verrouiller les pages en mémoire pour le compte disposant de privilèges pour exécuter le compte de démarrage sqlservr.exe (compte de démarrage de SQL ServerSQL Server).To disable the Lock Pages In Memory option for SQL ServerSQL Server, remove the Lock Pages in Memory user right for the account with privileges to run sqlservr.exe (the SQL ServerSQL Server startup account) startup account.

Cette option n’affecte pas la gestion de la mémoire dynamique de SQL ServerSQL Server. Elle peut donc être augmentée ou réduite à la demande d’autres régisseurs de mémoire.Setting this option does not affect SQL ServerSQL Server dynamic memory management, allowing it to expand or shrink at the request of other memory clerks. Quand vous utilisez le droit d’utilisateur Verrouiller les pages en mémoire, il est recommandé de définir une limite supérieure pour max server memory, comme indiqué ci-dessus.When using the Lock Pages in Memory user right it is recommended to set an upper limit for max server memory as detailed above.

Important

Cette option ne doit être utilisée qu’en cas de nécessité, à savoir s’il y a des raisons de penser que le processus sqlservr est hors page. Dans ce cas, l’erreur 17890, qui ressemble à l’exemple ci-dessous, est signalée dans le journal des erreurs : A significant part of sql server process memory has been paged out. This may result in a performance degradation. Duration: #### seconds. Working set (KB): ####, committed (KB): ####, memory utilization: ##%.Setting this option should only be used when necessary, namely if there are signs that sqlservr process is being paged out. In this case, error 17890 will be reported in the Errorlog, resembling the below example: A significant part of sql server process memory has been paged out. This may result in a performance degradation. Duration: #### seconds. Working set (KB): ####, committed (KB): ####, memory utilization: ##%. À compter de SQL Server 2012 (11.x)SQL Server 2012 (11.x), l’indicateur de trace 845 n’est pas nécessaire dans l’édition Standard pour utiliser Verrouiller les pages.Starting with SQL Server 2012 (11.x)SQL Server 2012 (11.x), trace flag 845 is not needed for Standard Edition to use Locked Pages.

Pour activer Verrouiller les pages en mémoireTo enable Lock Pages in Memory

Pour activer l’option Verrouiller les pages en mémoire :To enable the lock pages in memory option:

  1. Dans le menu Démarrer , cliquez sur Exécuter.On the Start menu, click Run. Dans la zone Ouvrir , tapez gpedit.mscIn the Open box, type gpedit.msc.

    La boîte de dialogue Stratégie de groupe s'affiche.The Group Policy dialog box opens.

  2. Sur la console Stratégie de groupe , développez Configuration de l'ordinateur, puis Paramètres Windows.On the Group Policy console, expand Computer Configuration, and then expand Windows Settings.

  3. Développez Paramètres de sécurité, puis Stratégies locales.Expand Security Settings, and then expand Local Policies.

  4. Sélectionnez le dossier Attribution des droits utilisateur .Select the User Rights Assignment folder.

    Les stratégies s'affichent dans le volet Détails.The policies will be displayed in the details pane.

  5. Dans le volet, double-cliquez sur Verrouiller les pages en mémoire.In the pane, double-click Lock pages in memory.

  6. Dans la boîte de dialogue Paramètre de stratégie de sécurité locale, ajoutez le compte avec les privilèges nécessaires pour exécuter sqlservr.exe (compte de démarrage de SQL ServerSQL Server).In the Local Security Policy Setting dialog box, add the account with privileges to run sqlservr.exe (the SQL ServerSQL Server startup account).

Exécution de plusieurs instances de SQL ServerSQL ServerRunning multiple instances of SQL ServerSQL Server

Lorsque vous exécutez plusieurs instances de Moteur de base de donnéesDatabase Engine, vous avez le choix entre trois approches pour gérer la mémoire :When you are running multiple instances of the Moteur de base de donnéesDatabase Engine, there are three approaches you can use to manage memory:

  • Utiliser max server memory pour contrôler l’utilisation de la mémoire, comme indiqué ci-dessus.Use max server memory to control memory usage, as detailed above. Définir les valeurs maximales pour chaque instance, en veillant à ce que le total alloué ne soit pas supérieur à la mémoire physique totale de votre ordinateur.Establish maximum settings for each instance, being careful that the total allowance is not more than the total physical memory on your machine. Il se peut que vous souhaitiez attribuer à chaque instance une mémoire proportionnelle à la charge ou à la taille de base de données prévue.You might want to give each instance memory proportional to its expected workload or database size. Cette solution présente l'avantage qu'au démarrage des nouveaux processus ou des nouvelles instances, ils pourront accéder immédiatement à la mémoire libre.This approach has the advantage that when new processes or instances start up, free memory will be available to them immediately. En revanche, cette solution présente l'inconvénient que, si toutes les instances ne sont pas en cours d'exécution, aucune d'entre elles ne pourra utiliser la mémoire libre restante.The drawback is that if you are not running all of the instances, none of the running instances will be able to utilize the remaining free memory.

  • Utiliser min server memory pour contrôler l’utilisation de la mémoire, comme indiqué ci-dessus.Use min server memory to control memory usage, as detailed above. Définissez les valeurs minimales pour chaque instance, de telle sorte que leur somme soit inférieure de 1 à 2 Go à la mémoire physique totale de votre machine.Establish minimum settings for each instance, so that the sum of these minimums is 1-2 GB less than the total physical memory on your machine. Une fois encore, vous pouvez établir ces valeurs minimales de façon proportionnelle à la charge prévue de cette instance.Again, you may establish these minimums proportionately to the expected load of that instance. Cette solution présente l'avantage que si toutes les instances ne sont pas en cours d'exécution au même instant, celles qui le sont peuvent utiliser la mémoire libre restante.This approach has the advantage that if not all instances are running at the same time, the ones that are running can use the remaining free memory. Elle est également utile quand un autre processus gourmand en mémoire est présent sur l'ordinateur, car elle garantit que SQL ServerSQL Server bénéficie au moins d'une quantité de mémoire acceptable.This approach is also useful when there is another memory-intensive process on the computer, since it would insure that SQL ServerSQL Server would at least get a reasonable amount of memory. Le désagrément est que, lorsqu'une nouvelle instance (ou un autre processus) démarre, il se peut que les instances en cours d'exécution mettent un certain temps à libérer de la mémoire, notamment si elles doivent à cette fin réécrire les pages modifiées sur leurs bases de données.The drawback is that when a new instance (or any other process) starts, it may take some time for the running instances to release memory, especially if they must write modified pages back to their databases to do so.

  • Ne rien faire (déconseillé).Do nothing (not recommended). Les premières instances présentées avec une charge de travail tendent à allouer la totalité de la mémoire.The first instances presented with a workload will tend to allocate all of memory. Les instances inactives ou les instances ayant démarré ultérieurement peuvent finir par ne disposer que d'une quantité de mémoire minime.Idle instances, or instances started later, may end up running with only a minimal amount of memory available. SQL ServerSQL Server n'effectue aucune tentative pour équilibrer l'utilisation de la mémoire entre les instances.makes no attempt to balance memory usage across instances. Cependant, toutes les instances répondent aux signaux de Windows Notification Memory pour ajuster la taille de leur occupation mémoire.All instances will, however, respond to Windows Memory Notification signals to adjust the size of their memory footprint. Windows n'équilibre pas la mémoire entre les applications avec l'API Memory Notification.Windows does not balance memory across applications with the Memory Notification API. Il fournit simplement un commentaire global quant à la disponibilité de la mémoire sur le système.It merely provides global feedback as to the availability of memory on the system.

Comme vous pouvez modifier ces paramètres sans redémarrer les instances, vous pouvez sans peine procéder à des essais pour trouver les valeurs qui conviennent le mieux à votre modèle d'utilisation.You can change these settings without restarting the instances, so you can easily experiment to find the best settings for your usage pattern.

Apport de la quantité maximale de mémoire à SQL ServerProviding the maximum amount of memory to SQL Server

La mémoire peut être configurée jusqu’à la limite de l’espace d’adressage virtuel utilisé par le processus dans toutes les éditions de SQL ServerSQL Server.Memory can be configured up to the process virtual address space limit in all SQL ServerSQL Server editions. Pour plus d’informations, consultez Limites de mémoire pour les versions de Windows et de Windows Server.For more information, see Memory Limits for Windows and Windows Server Releases.

ExemplesExamples

Exemple A. Définir l’option de mémoire maximale du serveur sur 4 Go.Example A. Set the max server memory option to 4 GB.

L’exemple suivant affecte la valeur 4 Go à l’option max server memory.The following example sets the max server memory option to 4 GB. Notez que bien que sp_configure spécifie le nom de l’option en tant que max server memory (MB), l’exemple illustre l’omission du (MB).Note that although sp_configure specifies the name of the option as max server memory (MB), the example demonstrates omitting the (MB).

sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'max server memory', 4096;
GO
RECONFIGURE;
GO

Une instruction similaire à celle-ci est générée :This will output a statement similar to:

L’option de configuration 'max server memory (MB)' est passée de 2147483647 à 4096.Configuration option 'max server memory (MB)' changed from 2147483647 to 4096. Pour installer, exécutez l'instruction RECONFIGURE.Run the RECONFIGURE statement to install.

Exemple B. Détermination de l’allocation de mémoire actuelleExample B. Determining Current Memory Allocation

La requête suivante retourne des informations sur la mémoire allouée actuellement.The following query returns information about currently allocated memory.

SELECT 
  physical_memory_in_use_kb/1024 AS sql_physical_memory_in_use_MB, 
    large_page_allocations_kb/1024 AS sql_large_page_allocations_MB, 
    locked_page_allocations_kb/1024 AS sql_locked_page_allocations_MB,
    virtual_address_space_reserved_kb/1024 AS sql_VAS_reserved_MB, 
    virtual_address_space_committed_kb/1024 AS sql_VAS_committed_MB, 
    virtual_address_space_available_kb/1024 AS sql_VAS_available_MB,
    page_fault_count AS sql_page_fault_count,
    memory_utilization_percentage AS sql_memory_utilization_percentage, 
    process_physical_memory_low AS sql_process_physical_memory_low, 
    process_virtual_memory_low AS sql_process_virtual_memory_low
FROM sys.dm_os_process_memory;  

Exemple C. Détermination de la valeur de 'max server memory (MB)'Example C. Determining value for 'max server memory (MB)'

La requête suivante retourne des informations sur la valeur actuellement configurée et la valeur en cours d’utilisation par SQL Server.The following query returns information about the currently configured value and the value in use by SQL Server. Cette requête retourne des résultats, que 'show advanced options' ait, ou pas, la valeur true.This query will return results regardless of whether 'show advanced options' is true.

SELECT c.value, c.value_in_use
FROM sys.configurations c WHERE c.[name] = 'max server memory (MB)'

Voir aussiSee Also

Guide d’architecture de gestion de la mémoire Memory Management Architecture Guide
Surveiller et régler les performances Monitor and Tune for Performance
RECONFIGURE (Transact-SQL) RECONFIGURE (Transact-SQL)
Options de configuration de serveur (SQL Server) Server Configuration Options (SQL Server)
sp_configure (Transact-SQL) sp_configure (Transact-SQL)
Options de démarrage du service moteur de base de données Database Engine Service Startup Options
Éditions et fonctionnalités prises en charge de SQL Server 2016 Editions and supported features of SQL Server 2016
Éditions et fonctionnalités prises en charge de SQL Server 2017 Editions and supported features of SQL Server 2017
Éditions et fonctionnalités prises en charge de SQL Server 2017 sur Linux Editions and supported features of SQL Server 2017 on Linux
Limites de mémoire pour les versions de Windows et de Windows ServerMemory Limits for Windows and Windows Server Releases