guide d’architecture de gestion de la mémoireMemory Management Architecture Guide

S’APPLIQUE À : ouiSQL Server ouiAzure SQL Database ouiAzure SQL Data Warehouse ouiParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

Gestionnaire de mémoire virtuelle WindowsWindows Virtual Memory Manager

Les zones d'espace d'adressage validées sont mappées à la mémoire physique disponible par le Gestionnaire de mémoire virtuelle Windows (VMM).The committed regions of address space are mapped to the available physical memory by the Windows Virtual Memory Manager (VMM).

Pour plus d’informations sur la quantité de mémoire physique prise en charge par les divers systèmes d’exploitation, consultez la documentation Windows sur les limites de la mémoire selon les versions de Windows.For more information on the amount of physical memory supported by different operating systems, see the Windows documentation on Memory Limits for Windows Releases.

Les systèmes de mémoire virtuelle autorisent le surengagement de la mémoire physique, de sorte que le rapport entre la mémoire virtuelle et la mémoire physique peut être supérieur à 1:1.Virtual memory systems allow the over-commitment of physical memory, so that the ratio of virtual-to-physical memory can exceed 1:1. Il est alors possible d'exécuter des programmes plus volumineux sur des ordinateurs offrant diverses configurations de la mémoire physique.As a result, larger programs can run on computers with a variety of physical memory configurations. Toutefois, dans la plupart des cas, l'utilisation d'une quantité de mémoire virtuelle nettement plus importante que les plages de travail moyennes combinées de tous les processus peut entraîner une détérioration des performances.However, using significantly more virtual memory than the combined average working sets of all the processes can cause poor performance.

Architecture de la mémoire de SQL ServerSQL Server Memory Architecture

SQL ServerSQL Server acquiert et libère la mémoire dynamiquement selon ses besoins.dynamically acquires and frees memory as required. En règle générale, un administrateur ne doit plus spécifier la quantité de mémoire à allouer à SQL ServerSQL Server, même si cette option existe toujours et est obligatoire dans certains environnements.Typically, an administrator does not have to specify how much memory should be allocated to SQL ServerSQL Server, although the option still exists and is required in some environments.

L'un des objectifs principaux de tous les logiciels de base de données est de réduire les E/S disque, car les opérations de lecture et écriture sur le disque font partie des opérations les plus consommatrices de ressources.One of the primary design goals of all database software is to minimize disk I/O because disk reads and writes are among the most resource-intensive operations. SQL ServerSQL Server crée un pool de mémoires tampons en mémoire afin d’y garder les pages lues à partir de la base de données.builds a buffer pool in memory to hold pages read from the database. Une grande partie du code SQL ServerSQL Server vise à réduire au minimum le nombre d’opérations de lecture et d’écriture physiques entre le disque et le pool de mémoires tampons.Much of the code in SQL ServerSQL Server is dedicated to minimizing the number of physical reads and writes between the disk and the buffer pool. SQL ServerSQL Server tente d’atteindre un équilibre entre deux objectifs :tries to reach a balance between two goals:

  • Empêcher le pool de mémoires tampons d'atteindre une taille susceptible de priver le système de mémoire.Keep the buffer pool from becoming so big that the entire system is low on memory.
  • Réduire les E/S physiques vers les fichiers de la base de données en augmentant la taille du pool de mémoires tampons.Minimize physical I/O to the database files by maximizing the size of the buffer pool.

Notes

Dans un système surchargé, certaines requêtes volumineuses dont l'exécution nécessite une importante quantité de mémoire ne peuvent pas obtenir la quantité minimale de mémoire requise et reçoivent une erreur de temporisation pendant qu'elles attendent des ressources mémoire.In a heavily loaded system, some large queries that require a large amount of memory to run cannot get the minimum amount of requested memory and receive a time-out error while waiting for memory resources. Pour résoudre ce problème, augmentez la valeur de l'option query wait.To resolve this, increase the query wait Option. Pour une requête parallèle, envisagez de réduire l'option max degree of parallelism(Degré maximum de parallélisme).For a parallel query, consider reducing the max degree of parallelism Option.

Notes

Dans un système où une charge très lourde pèse sur les ressources mémoire, les requêtes comportant jointure de fusion, tri et bitmap dans le plan de requête peuvent éliminer le bitmap si elles n'obtiennent pas la mémoire minimale nécessaire pour ce bitmap.In a heavily loaded system under memory pressure, queries with merge join, sort and bitmap in the query plan can drop the bitmap when the queries do not get the minimum required memory for the bitmap. Ceci peut affecter les performances de la requête, et, si le processus de tri ne tient pas en mémoire, ceci peut accroître l'utilisation des tables de travail dans la base de données tempdb, ce qui augmente le volume de tempdb.This can affect the query performance and if the sorting process can not fit in memory, it can increase the usage of worktables in tempdb database, causing tempdb to grow. Pour résoudre ce problème, ajoutez de la mémoire physique ou paramétrez les requêtes de façon qu'elles utilisent un autre plan de requête plus rapide.To resolve this problem add physical memory or tune the queries to use a different and faster query plan.

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

L’utilisation d’AWE et du privilège de verrouillage des pages en mémoire vous permet de fournir les quantités de mémoire suivantes au moteur de base de données SQL ServerSQL Server .By using AWE and the Locked Pages in Memory privilege, you can provide the following amounts of memory to the SQL ServerSQL Server Database Engine.

Notes

Le tableau suivant comprend une colonne pour les versions 32 bits qui ne sont plus disponibles.The following table includes a column for 32-bit versions, which are no longer available.

32 bits 132-bit 1 64 bits64-bit
Mémoire conventionnelleConventional memory Toutes les éditions SQL ServerSQL Server .All SQL ServerSQL Server editions. jusqu'à la limite d'espace d'adressage virtuel de processus :Up to process virtual address space limit:
- 2 Go- 2 GB
- 3 Go avec le paramètre d’amorçage /3 gb 2- 3 GB with /3gb boot parameter 2
- 4 Go sur WOW64 3- 4 GB on WOW64 3
Toutes les éditions SQL ServerSQL Server .All SQL ServerSQL Server editions. jusqu'à la limite d'espace d'adressage virtuel de processus :Up to process virtual address space limit:
- 7 To avec l’architecture IA64 (IA64 non pris en charge dans SQL Server 2012 (11.x)SQL Server 2012 (11.x) et les versions ultérieures)- 7 TB with IA64 architecture (IA64 not supported in SQL Server 2012 (11.x)SQL Server 2012 (11.x) and above)
- Maximum du système d’exploitation avec architecture x64 4- Operating system maximum with x64 architecture 4
Mécanisme AWE (Permet à SQL ServerSQL Server d'aller au-delà de la limite d'espace d'adressage virtuel de processus sur une plateforme 32 bits.)AWE mechanism (Allows SQL ServerSQL Server to go beyond the process virtual address space limit on 32-bit platform.) SQL ServerSQL Server éditions Standard, Entreprise et Développeur : le pool de mémoires tampons peut accéder à 64 Go de mémoire maximum.Standard, Enterprise, and Developer editions: Buffer pool is capable of accessing up to 64 GB of memory. Non applicable 5Not applicable 5
Privilège de verrouillage des pages en mémoire du système d’exploitation (permet de verrouiller la mémoire physique, empêchant ainsi la pagination par le système d’exploitation de la mémoire verrouillée). 6Lock pages in memory operating system (OS) privilege (allows locking physical memory, preventing OS paging of the locked memory.) 6 SQL ServerSQL Server éditions Standard, Entreprise et Développeur : requis pour que le processus SQL ServerSQL Server utilise le mécanisme AWE.Standard, Enterprise, and Developer editions: Required for SQL ServerSQL Server process to use AWE mechanism. La mémoire allouée par le biais du mécanisme AWE ne peut pas être dépaginée.Memory allocated through AWE mechanism cannot be paged out.
L'accord de ce privilège sans l'activation de AWE n'a aucun effet sur le serveur.Granting this privilege without enabling AWE has no effect on the server.
Option uniquement utilisée 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: ##%.Only 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 following 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: ##%.

1 les versions 32 bits ne sont pas disponibles à partir de la version SQL Server 2014 (12.x)SQL Server 2014 (12.x).1 32-bit versions are not available starting with SQL Server 2014 (12.x)SQL Server 2014 (12.x).
2 /3gb est un paramètre d’amorçage de système d’exploitation.2 /3gb is an operating system boot parameter. Pour plus d'informations, consultez la MSDN Library.For more information, visit the MSDN Library.
3 WOW64 (Windows on Windows 64) est un mode dans lequel SQL ServerSQL Server 32 bits s’exécute sur un système d’exploitation 64 bits.3 WOW64 (Windows on Windows 64) is a mode in which 32-bit SQL ServerSQL Server runs on a 64-bit operating system.
4 SQL ServerSQL Server édition Standard prend en charge jusqu’à 128 Go.4 SQL ServerSQL Server Standard Edition supports up to 128 GB. SQL ServerSQL Server Enterprise Edition prend en charge le maximum du système d’exploitation.Enterprise Edition supports the operating system maximum.
5 Notez que l’option sp_configure awe enabled est présente sur SQL ServerSQL Server64 bits, mais qu’elle est ignorée.5 Note that the sp_configure awe enabled option was present on 64-bit SQL ServerSQL Server, but it is ignored.
6 Si le privilège de verrouillage des pages en mémoire (LPIM) est accordé (sur la version 32 bits pour la prise en charge d’AWE ou sur la version 64 bits par elle-même), nous recommandons de définir également la mémoire de serveur maximale.6 If lock pages in memory privilege (LPIM) is granted (either on 32-bit for AWE support or on 64-bit by itself), we recommend also setting max server memory. Pour plus d’informations sur LPIM, consultez Mémoire du serveur (option de configuration de serveur).For more information on LPIM, refer to Server Memory Server Configuration Options

Notes

Les versions antérieures de SQL ServerSQL Server peuvent s’exécuter sur un système d’exploitation 32 bits.Older versions of SQL ServerSQL Server could run on a 32-bit operating system. L’accès à plus de 4 gigaoctets (Go) de mémoire sur un système d’exploitation 32 bits nécessite AWE (Address Windowing Extensions) pour gérer la mémoire.Accessing more than 4 gigabytes (GB) of memory on a 32-bit operating system required Address Windowing Extensions (AWE) to manage the memory. Cela n’est pas nécessaire lorsque SQL ServerSQL Server est exécuté sur des systèmes d’exploitation 64 bits.This is not necessary when SQL ServerSQL Server is running on 64-bit operation systems. Pour plus d’informations sur AWE, consultez Espace d’adressage de processus et Gestion de la mémoire pour des bases de données volumineuses dans la documentation de SQL Server 2008SQL Server 2008.For more information about AWE, see Process Address Space and Managing Memory for Large Databases in the SQL Server 2008SQL Server 2008 documentation.

Changements apportés à la gestion de la mémoire à compter de SQL Server 2012 (11.x)SQL Server 2012 (11.x)Changes to Memory Management starting with SQL Server 2012 (11.x)SQL Server 2012 (11.x)

Dans les versions antérieures de SQL ServerSQL Server (SQL Server 2005 (9.x)SQL Server 2005 (9.x), SQL Server 2008SQL Server 2008 et SQL Server 2008 R2SQL Server 2008 R2), la mémoire était allouée selon cinq mécanismes différents :In earlier versions of SQL ServerSQL Server ( SQL Server 2005 (9.x)SQL Server 2005 (9.x), SQL Server 2008SQL Server 2008 and SQL Server 2008 R2SQL Server 2008 R2), memory allocation was done using five different mechanisms:

  • Allocateur de page unique (SPA) , comprenant uniquement les allocations de mémoire inférieures ou égales à 8 Ko dans le processus SQL ServerSQL Server.Single-Page Allocator (SPA), including only memory allocations that were less than, or equal to 8-KB in the SQL ServerSQL Server process. Les options de configuration Mémoire maximum du serveur (Mo) et Mémoire minimum du serveur (Mo) déterminaient les limites de la mémoire physique consommée par SPA.The max server memory (MB) and min server memory (MB) configuration options determined the limits of physical memory that the SPA consumed. Le pool de tampons était aussi le mécanisme pour SPA et le plus grand consommateur d’allocations de pages uniques.THe buffer pool was simultaneously the mechanism for SPA, and the largest consumer of single-page allocations.
  • Allocateur de plusieurs pages (MPA) , pour les allocations de mémoire demandant plus de 8 Ko.Multi-Page Allocator (MPA), for memory allocations that request more than 8-KB.
  • Allocateur du CLR, comprenant les segments de mémoire du CLR SQL et ses allocations globales créées durant l’initialisation du CLR.CLR Allocator, including the SQL CLR heaps and its global allocations that are created during CLR initialization.
  • Allocations de mémoire pour les piles de threads dans le processus SQL ServerSQL Server.Memory allocations for thread stacks in the SQL ServerSQL Server process.
  • Allocations Windows directes (DWA) , pour les demandes d’allocation de mémoire apportées directement à Windows.Direct Windows allocations (DWA), for memory allocation requests made directly to Windows. Il s’agit notamment de l’utilisation des segments de mémoire Windows et des allocations virtuelles directes effectuées par les modules chargés dans le processus SQL ServerSQL Server.These include Windows heap usage and direct virtual allocations made by modules that are loaded into the SQL ServerSQL Server process. Les allocations à partir des DLL de procédure stockée étendue, les objets créés au moyen de procédures Automation (appels sp_OA) et les allocations à partir de fournisseurs de serveur lié sont des exemples de demandes d’allocation de mémoire.Examples of such memory allocation requests include allocations from extended stored procedure DLLs, objects that are created by using Automation procedures (sp_OA calls), and allocations from linked server providers.

À compter de SQL Server 2012 (11.x)SQL Server 2012 (11.x), les allocations de page unique, les allocations de plusieurs pages et les allocations du CLR sont toutes consolidées dans un Allocateur de pages de « toute taille » et sont incluent dans les limites de mémoire contrôlées par les options de configuration mémoire maximum du serveur (Mo) et mémoire minimum du serveur (Mo) .Starting with SQL Server 2012 (11.x)SQL Server 2012 (11.x), Single-Page allocations, Multi-Page allocations and CLR allocations are all consolidated into a "Any size" Page Allocator, and it's included in memory limits that are controlled by max server memory (MB) and min server memory (MB) configuration options. Ce changement offre des capacités de redimensionnement plus précises pour tous les besoins en mémoire transitant par le Gestionnaire de mémoire de SQL ServerSQL Server.This change provided a more accurate sizing ability for all memory requirements that go through the SQL ServerSQL Server memory manager.

Important

Examinez attentivement vos configurations Mémoire maximum du serveur (Mo) et Mémoire minimum du serveur (Mo) après la mise à niveau vers SQL Server 2012 (11.x)SQL Server 2012 (11.x) jusqu’à SQL Server 2017SQL Server 2017.Carefully review your current max server memory (MB) and min server memory (MB) configurations after you upgrade to SQL Server 2012 (11.x)SQL Server 2012 (11.x) through SQL Server 2017SQL Server 2017. En effet, à compter de SQL Server 2012 (11.x)SQL Server 2012 (11.x), ces configurations comprennent et représentent plus d’allocations de mémoire que celles des versions antérieures.This is because starting in SQL Server 2012 (11.x)SQL Server 2012 (11.x), such configurations now include and account for more memory allocations compared to earlier versions. Ces changements s’appliquent aux versions 32 bits et 64 bits de SQL Server 2012 (11.x)SQL Server 2012 (11.x) et SQL Server 2014 (12.x)SQL Server 2014 (12.x), ainsi qu’aux versions 64 bits de SQL Server 2016 (13.x)SQL Server 2016 (13.x) jusqu’à SQL Server 2017SQL Server 2017.These changes apply to both 32-bit and 64-bit versions of SQL Server 2012 (11.x)SQL Server 2012 (11.x) and SQL Server 2014 (12.x)SQL Server 2014 (12.x), and 64-bit versions of SQL Server 2016 (13.x)SQL Server 2016 (13.x) through SQL Server 2017SQL Server 2017.

Le tableau suivant indique si un type spécifique d’allocation de mémoire est contrôlé par les options de configuration Mémoire maximum du serveur (Mo) et Mémoire minimum du serveur (Mo) :The following table indicates whether a specific type of memory allocation is controlled by the max server memory (MB) and min server memory (MB) configuration options:

Type d’allocation de mémoireType of memory allocation SQL Server 2005 (9.x)SQL Server 2005 (9.x), SQL Server 2008SQL Server 2008 et SQL Server 2008 R2SQL Server 2008 R2, SQL Server 2008SQL Server 2008 and SQL Server 2008 R2SQL Server 2008 R2 À compter de SQL Server 2012 (11.x)SQL Server 2012 (11.x)Starting with SQL Server 2012 (11.x)SQL Server 2012 (11.x)
Allocation de page uniqueSingle-page allocations OuiYes Oui, regroupées dans des allocations de pages de « toute taille »Yes, consolidated into "any size" page allocations
Allocation de plusieurs pagesMulti-page allocations NonNo Oui, regroupées dans des allocations de pages de « toute taille »Yes, consolidated into "any size" page allocations
Allocation du CLRCLR allocations NonNo OuiYes
Mémoire de piles de threadsThread stacks memory NonNo NonNo
Allocations directes de WindowsDirect allocations from Windows NonNo NonNo

À compter de SQL Server 2012 (11.x)SQL Server 2012 (11.x), SQL ServerSQL Server peut allouer plus de mémoire que la valeur spécifiée dans le paramètre max server memory.Starting with SQL Server 2012 (11.x)SQL Server 2012 (11.x), SQL ServerSQL Server might allocate more memory than the value specified in the max server memory setting. Ce comportement peut se produire quand la valeur de Mémoire totale du serveur (Ko) a déjà atteint le paramètre Mémoire du serveur cible (Ko) (comme spécifié par la mémoire maximum du serveur).This behavior may occur when the Total Server Memory (KB) value has already reached the Target Server Memory (KB) setting (as specified by max server memory). Si la mémoire libre contiguë est insuffisante pour répondre aux demandes de mémoire de plusieurs pages (plus de 8 Ko) en raison de la fragmentation de la mémoire, SQL ServerSQL Server peut procéder à une surallocation au lieu de rejeter la demande de mémoire.If there is insufficient contiguous free memory to meet the demand of multi-page memory requests (more than 8 KB) because of memory fragmentation, SQL ServerSQL Server can perform over-commitment instead of rejecting the memory request.

Dès que cette allocation est effectuée, la tâche en arrière-plan du moniteur de ressource signale à tous les consommateurs de mémoire de libérer la mémoire allouée et tente de faire passer la valeur Mémoire totale du serveur (Ko) en dessous de la spécification Mémoire du serveur cible (Ko) .As soon as this allocation is performed, the Resource Monitor background task starts to signal all memory consumers to release the allocated memory, and tries to bring the Total Server Memory (KB) value below the Target Server Memory (KB) specification. L’utilisation de la mémoire de SQL ServerSQL Server peut donc dépasser brièvement le paramètre max server memory.Therefore, SQL ServerSQL Server memory usage could briefly exceed the max server memory setting. Dans ce cas, la valeur du compteur de performances Mémoire totale du serveur (Ko) dépasse les paramètres max server memory et Mémoire du serveur cible (Ko) .In this situation, the Total Server Memory (KB) performance counter reading will exceed the max server memory and Target Server Memory (KB) settings.

Ce comportement est généralement observé durant les opérations suivantes :This behavior is typically observed during the following operations:

  • Requêtes d’index Columnstore volumineusesLarge Columnstore index queries.
  • Constructions ou reconstructions d’index ColumnStore qui utilisent des volumes importants de mémoire pour effectuer les opérations de hachage et de triColumnstore index (re)builds, which use large volumes of memory to perform Hash and Sort operations.
  • Opérations de sauvegarde qui nécessitent des mémoires tampons volumineusesBackup operations that require large memory buffers.
  • Traçage d’opérations qui doivent stocker des paramètres d’entrée volumineuxTracing operations that have to store large input parameters.

Changements apportés à « memory_to_reserve » à compter de SQL Server 2012 (11.x)SQL Server 2012 (11.x)Changes to "memory_to_reserve" starting with SQL Server 2012 (11.x)SQL Server 2012 (11.x)

Dans les versions antérieures de SQL Server (SQL Server 2005 (9.x)SQL Server 2005 (9.x), SQL Server 2008SQL Server 2008 et SQL Server 2008 R2SQL Server 2008 R2), le Gestionnaire de mémoire de SQL ServerSQL Server réservait une partie de l’espace d’adressage virtuel (VAS) des processus à l’allocateur multipage, à l’allocateur CLR, aux allocations de mémoire pour les piles de threads dans le processus SQL Server et aux allocations Windows directes (DWA) .In earlier versions of SQL Server ( SQL Server 2005 (9.x)SQL Server 2005 (9.x), SQL Server 2008SQL Server 2008 and SQL Server 2008 R2SQL Server 2008 R2), the SQL ServerSQL Server memory manager set aside a part of the process virtual address space (VAS) for use by the Multi-Page Allocator (MPA), CLR Allocator, memory allocations for thread stacks in the SQL Server process, and Direct Windows allocations (DWA). Cette partie de l’espace d’adressage virtuel est également appelée « Mem-To-Leave » ou « pool non-tampon ».This part of the virtual address space is also known as "Mem-To-Leave" or "non-Buffer Pool" region.

L’espace d’adressage virtuel réservé pour ces allocations est déterminé par l’option de configuration memory_to_reserve .The virtual address space that is reserved for these allocations is determined by the memory_to_reserve configuration option. La valeur par défaut utilisée par SQL ServerSQL Server est de 256 Mo.The default value that SQL ServerSQL Server uses is 256 MB. Pour remplacer la valeur par défaut, utilisez le paramètre de démarrage SQL ServerSQL Server -g.To override the default value, use the SQL ServerSQL Server -g startup parameter. 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.Refer to the documentation page on Database Engine Service Startup Options for information on the -g startup parameter.

En effet, à compter de SQL Server 2012 (11.x)SQL Server 2012 (11.x), le nouvel allocateur de page de « toute taille » gère également les allocations supérieures à 8 Ko, et la valeur memory_to_reserve n’inclut pas les allocations de plusieurs pages.Because starting with SQL Server 2012 (11.x)SQL Server 2012 (11.x), the new "any size" page allocator also handles allocations greater than 8 KB, the memory_to_reserve value does not include the multi-page allocations. À l’exception de ce changement, cette option de configuration est la même.Except for this change, everything else remains the same with this configuration option.

Le tableau suivant indique si un type spécifique d’allocation de mémoire appartient à la région memory_to_reserve de l’espace d’adressage virtuel pour le processus SQL ServerSQL Server :The following table indicates whether a specific type of memory allocation falls into the memory_to_reserve region of the virtual address space for the SQL ServerSQL Server process:

Type d’allocation de mémoireType of memory allocation SQL Server 2005 (9.x)SQL Server 2005 (9.x), SQL Server 2008SQL Server 2008 et SQL Server 2008 R2SQL Server 2008 R2, SQL Server 2008SQL Server 2008 and SQL Server 2008 R2SQL Server 2008 R2 À compter de SQL Server 2012 (11.x)SQL Server 2012 (11.x)Starting with SQL Server 2012 (11.x)SQL Server 2012 (11.x)
Allocation de page uniqueSingle-page allocations NonNo Non, regroupées dans des allocations de pages de « toute taille »No, consolidated into "any size" page allocations
Allocation de plusieurs pagesMulti-page allocations OuiYes Non, regroupées dans des allocations de pages de « toute taille »No, consolidated into "any size" page allocations
Allocation du CLRCLR allocations OuiYes OuiYes
Mémoire de piles de threadsThread stacks memory OuiYes OuiYes
Allocations directes de WindowsDirect allocations from Windows OuiYes OuiYes

Gestion dynamique de la mémoireDynamic Memory Management

Le comportement par défaut de la gestion de la mémoire du Moteur de base de données SQL ServerSQL Server Database Engine est d’acquérir autant de mémoire que nécessaire sans provoquer une insuffisance de mémoire sur le système.The default memory management behavior of the Moteur de base de données SQL ServerSQL Server Database Engine is to acquire as much memory as it needs without creating a memory shortage on the system. Pour cela, le Moteur de base de données SQL ServerSQL Server Database Engine utilise les API de notification de mémoire de Microsoft Windows.The Moteur de base de données SQL ServerSQL Server Database Engine does this by using the Memory Notification APIs in Microsoft Windows.

Lorsque SQL ServerSQL Server utilise dynamiquement la mémoire, il interroge régulièrement le système afin de déterminer la mémoire physique disponible.When SQL ServerSQL Server is using memory dynamically, it queries the system periodically to determine the amount of free memory. La conservation de cette mémoire libre empêche le système d'exploitation de paginer.Maintaining this free memory prevents the operating system (OS) from paging. S'il y a moins de mémoire, SQL ServerSQL Server en libère pour le système d'exploitation.If less memory is free, SQL ServerSQL Server releases memory to the OS. S’il y a plus de mémoire disponible, SQL ServerSQL Server peut allouer davantage de mémoire.If more memory is free, SQL ServerSQL Server may allocate more memory. SQL ServerSQL Server n’ajoute de la mémoire que lorsque sa charge de travail en requiert davantage. Un serveur au repos n’augmente pas la taille de son espace d’adressage virtuel.adds memory only when its workload requires more memory; a server at rest does not increase the size of its virtual address space.

L’option Mémoire maximum du serveur contrôle l’allocation de mémoire de SQL ServerSQL Server, la mémoire de compilation, tous les caches (notamment le pool de mémoires tampons), les allocations de mémoire d’exécution des requêtes, la mémoire du gestionnaire de verrous et la mémoire du CLR1 (essentiellement les régisseurs de mémoire se trouvant dans sys.dm_os_memory_clerks ).Max server memory controls the SQL ServerSQL Server memory allocation, compile memory, all caches (including the buffer pool), query execution memory grants, lock manager memory, and CLR1 memory (essentially any memory clerk found in sys.dm_os_memory_clerks).

1 La mémoire du CLR est gérée dans le cadre des allocations max_server_memory à compter de SQL Server 2012 (11.x)SQL Server 2012 (11.x).1 CLR memory is managed under max_server_memory allocations starting with SQL Server 2012 (11.x)SQL Server 2012 (11.x).

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;  

La mémoire pour les piles de threads1, le CLR2, les fichiers .dll de procédure étendue, les fournisseurs OLE DB référencés par les requêtes distribuées, les objets Automation référencés dans les instructions Transact-SQLTransact-SQL et la mémoire allouée par une DLL non-SQL ServerSQL Server ne sont pas contrôlées par max server memory.Memory for thread stacks1, CLR2, extended procedure .dll files, the OLE DB providers referenced by distributed queries, automation objects referenced in Transact-SQLTransact-SQL statements, and any memory allocated by a non SQL ServerSQL Server DLL are not controlled by max server memory.

1 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.1 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. Les tailles de pile SQL ServerSQL Server sont les suivantes :SQL ServerSQL Server stack sizes are as follows:

Architecture de SQL ServerSQL Server Architecture Architecture du système d’exploitationOS Architecture Taille de la pileStack Size
x86 (32 bits)x86 (32-bit) x86 (32 bits)x86 (32-bit) 512 Ko512 KB
x86 (32 bits)x86 (32-bit) x64 (64 bits)x64 (64-bit) 768 Ko768 KB
x64 (64 bits)x64 (64-bit) x64 (64 bits)x64 (64-bit) 2 048 Ko2048 KB
IA64 (Itanium)IA64 (Itanium) IA64 (Itanium)IA64 (Itanium) 4 096 Ko4096 KB

2 La mémoire du CLR est gérée dans le cadre des allocations max_server_memory à compter de SQL Server 2012 (11.x)SQL Server 2012 (11.x).2 CLR memory is managed under max_server_memory allocations starting with SQL Server 2012 (11.x)SQL Server 2012 (11.x).

SQL ServerSQL Server utilise l’API de notification de mémoire QueryMemoryResourceNotification pour déterminer à quel moment le Gestionnaire de mémoire de SQL ServerSQL Server peut allouer et libérer de la mémoire.uses the memory notification API QueryMemoryResourceNotification to determine when the SQL ServerSQL Server Memory Manager may allocate memory and release memory.

Lorsque SQL ServerSQL Server démarre, il calcule la taille de l'espace d'adressage virtuel pour le pool de mémoires tampons d'après plusieurs paramètres, dont la quantité de mémoire physique du système, le nombre de threads serveur et diverses options de démarrage.When SQL ServerSQL Server starts, it computes the size of virtual address space for the buffer pool based on a number of parameters such as amount of physical memory on the system, number of server threads and various startup parameters. SQL ServerSQL Server réserve la quantité ainsi calculée de son espace d’adressage virtuel de processus pour le pool de mémoires tampons, mais il acquiert (valide) uniquement la quantité nécessaire de mémoire physique pour la charge actuelle.reserves the computed amount of its process virtual address space for the buffer pool, but it acquires (commits) only the required amount of physical memory for the current load.

L'instance continue alors à acquérir de la mémoire comme l'exige la prise en charge de la charge de travail.The instance then continues to acquire memory as needed to support the workload. Au fur et à mesure que des utilisateurs se connectent et exécutent des requêtes, SQL ServerSQL Server acquiert la mémoire physique supplémentaire à la demande.As more users connect and run queries, SQL ServerSQL Server acquires the additional physical memory on demand. Une instance de SQL ServerSQL Server continue d’acquérir de la mémoire physique jusqu’à ce qu’elle atteigne sa cible d’allocation de mémoire maximum du serveur, ou jusqu’à ce que le système d’exploitation indique qu’il n’y a plus de mémoire disponible en surplus. Elle libère de la mémoire quand elle en a plus que la valeur de mémoire minimum du serveur paramétrée et si le système d’exploitation indique qu’il y a une insuffisance de mémoire disponible.A SQL ServerSQL Server instance continues to acquire physical memory until it either reaches its max server memory allocation target or the OS indicates there is no longer an excess of free memory; it frees memory when it has more than the min server memory setting, and the OS indicates that there is a shortage of free memory.

Étant donné que d'autres applications sont démarrées sur l'ordinateur exécutant une instance SQL ServerSQL Server, elles consomment de la mémoire et la quantité de mémoire physique disponible descend en dessous de la cible de SQL ServerSQL Server .As other applications are started on a computer running an instance of SQL ServerSQL Server, they consume memory and the amount of free physical memory drops below the SQL ServerSQL Server target. L'instance de SQL ServerSQL Server règle sa consommation de mémoire.The instance of SQL ServerSQL Server adjusts its memory consumption. Si une autre application est arrêtée, la mémoire disponible est augmentée, et l’instance de SQL ServerSQL Server augmente la taille de son allocation de mémoire.If another application is stopped and more memory becomes available, the instance of SQL ServerSQL Server increases the size of its memory allocation. SQL ServerSQL Server peut libérer et acquérir plusieurs mégaoctets de mémoire chaque seconde, ce qui lui permet de s’adapter rapidement aux changements d’allocation de mémoire.can free and acquire several megabytes of memory each second, allowing it to quickly adjust to memory allocation changes.

Effets des options de configuration « min server memory » et « max server memory »Effects of min and max server memory

Les options de configuration min server memory et max server memory permettent d’établir les limites supérieure et inférieure de la quantité de mémoire utilisée par le pool de mémoires tampons et d’autres caches du moteur de base de données SQL ServerSQL Server.The min server memory and max server memory configuration options establish upper and lower limits to the amount of memory used by the buffer pool and other caches of the SQL ServerSQL Server Database Engine. Le pool de mémoires tampons n'obtient pas immédiatement la quantité de mémoire spécifiée dans min server memory.The buffer pool does not immediately acquire the amount of memory specified in min server memory. En effet, il commence seulement avec la mémoire nécessaire à l'initialisation.The buffer pool starts with only the memory required to initialize. Au fur et à mesure que la charge de travail du Moteur de base de données SQL ServerSQL Server Database Engine augmente, celui-ci acquiert la mémoire nécessaire à la prise en charge de ces travaux.As the Moteur de base de données SQL ServerSQL Server Database Engine workload increases, it keeps acquiring the memory required to support the workload. Le pool de mémoires tampons ne libère aucune partie de la mémoire acquise avant d'atteindre la valeur spécifiée dans min server memory.The buffer pool does not free any of the acquired memory until it reaches the amount specified in min server memory. Dès lors que la quantité spécifiée dans min server memory est atteinte, le pool de mémoires tampons utilise l'algorithme standard pour acquérir et libérer la mémoire en fonction des besoins.Once min server memory is reached, the buffer pool then uses the standard algorithm to acquire and free memory as needed. La seule différence réside dans le fait que le pool de mémoires tampons ne diminue jamais son allocation de mémoire en dessous de la valeur spécifiée dans min server memory et n'obtient jamais plus de mémoire que le niveau spécifié dans max server memory.The only difference is that the buffer pool never drops its memory allocation below the level specified in min server memory, and never acquires more memory than the level specified in max server memory.

Notes

En tant que processus,SQL ServerSQL Server acquiert plus de mémoire qu’indiqué par l’option max server memory.SQL ServerSQL Server as a process acquires more memory than specified by max server memory option. Les composants internes et externes peuvent allouer de la mémoire en dehors du pool de mémoires tampons, qui consomme un supplément de mémoire, mais la mémoire allouée au pool de mémoires tampons représente généralement la plus grande part de mémoire consommée par SQL ServerSQL Server.Both internal and external components can allocate memory outside of the buffer pool, which consumes additional memory, but the memory allocated to the buffer pool usually still represents the largest portion of memory consumed by SQL ServerSQL Server.

La quantité de mémoire acquise par le Moteur de base de données SQL ServerSQL Server Database Engine dépend entièrement de la charge de travail imposée à l’instance.The amount of memory acquired by the Moteur de base de données SQL ServerSQL Server Database Engine is entirely dependent on the workload placed on the instance. Une instance SQL ServerSQL Server qui ne traite pas beaucoup de demandes risque de ne jamais atteindre la valeur de min server memory.A SQL ServerSQL Server instance that is not processing many requests may never reach min server memory.

Si la valeur spécifiée pour min server memory et max server memory est identique, une fois que la mémoire allouée au Moteur de base de données SQL ServerSQL Server Database Engine a atteint cette valeur, le Moteur de base de données SQL ServerSQL Server Database Engine cesse de libérer et d’obtenir de la mémoire de façon dynamique pour le pool de mémoires tampons.If the same value is specified for both min server memory and max server memory, then once the memory allocated to the Moteur de base de données SQL ServerSQL Server Database Engine reaches that value, the Moteur de base de données SQL ServerSQL Server Database Engine stops dynamically freeing and acquiring memory for the buffer pool.

Si une instance SQL ServerSQL Server fonctionne sur un ordinateur sur lequel d’autres applications sont régulièrement arrêtées ou démarrées, l’allocation et la désallocation de mémoire par l’instance SQL ServerSQL Server peut ralentir le démarrage de ces applications.If an instance of SQL ServerSQL Server is running on a computer where other applications are frequently stopped or started, the allocation and deallocation of memory by the instance of SQL ServerSQL Server may slow the startup times of other applications. De même, si SQL ServerSQL Server est une application serveur parmi d’autres exécutées sur un seul ordinateur, l’administrateur système doit éventuellement contrôler la quantité de mémoire allouée à SQL ServerSQL Server.Also, if SQL ServerSQL Server is one of several server applications running on a single computer, the system administrators may need to control the amount of memory allocated to SQL ServerSQL Server. Pour ce faire, il peut utiliser les options min server memory et max server memory pour contrôler la quantité de mémoire utilisable par SQL ServerSQL Server .In these cases, you can use the min server memory and max server memory options to control how much memory SQL ServerSQL Server can use. Les options min server memory et max server memory sont spécifiées en mégaoctets.The min server memory and max server memory options are specified in megabytes. Pour en savoir plus, consultez les Options de configuration de la mémoire du serveur.For more information, see Server Memory Configuration Options.

Mémoire utilisée par les spécifications d’objets SQL ServerMemory used by SQL Server objects specifications

La liste suivante décrit la quantité estimée de mémoire utilisée par différents objets dans SQL ServerSQL Server.The following list describes the approximate amount of memory used by different objects in SQL ServerSQL Server. Les quantités indiquées sont des estimations. Elles peuvent varier en fonction de l’environnement et de la manière dont les objets sont créés :The amounts listed are estimates and can vary depending on the environment and how objects are created:

  • Verrou (tel qu’il est géré par le Gestionnaire de verrous) : 64 octets + 32 octets par propriétaireLock (as maintained by the Lock Manager): 64 bytes + 32 bytes per owner
  • Connexion utilisateur : Environ (3 * taille_paquet_réseau + 94 Ko)User connection: Approximately (3 * network_packet_size + 94 kb)

La taille des paquets réseau représente la taille des paquets TDS (Tabular Data Scheme) utilisés pour la communication entre des applications et le moteur de base de données SQL ServerSQL Server.The network packet size is the size of the tabular data scheme (TDS) packets that are used to communicate between applications and the SQL ServerSQL Server Database Engine. La taille par défaut s'élève à 4 Ko ; elle est contrôlée par l'option de configuration Taille du paquet réseau.The default packet size is 4 KB, and is controlled by the network packet size configuration option.

Lorsque la fonctionnalité MARS (Multiple Active Result Sets) est activée, la connexion utilisateur est environ (3 + 3 *nombre_connexions_logiques)* taille_paquet_réseau + 94 Ko.When multiple active result sets (MARS) are enabled, the user connection is approximately (3 + 3 * num_logical_connections) * network_packet_size + 94 KB

Effets de min memory per queryEffects of min memory per query

L’option de configuration min memory per query spécifie la quantité minimale de mémoire (en kilo-octets) allouée pour l’exécution d’une requête.The min memory per query configuration option establishes the minimum amount of memory (in kilobytes) that will be allocated for the execution of a query. Cela est également appelé « allocation de mémoire minimale ».This is also known as the minimum memory grant. Avant de commencer à s’exécuter, toutes les requêtes doivent attendre jusqu’à ce que la mémoire minimale demandée soit sécurisée, ou jusqu’à ce que la valeur spécifiée dans l’option de configuration du serveur Attente de la requête soit dépassée.All queries must wait until the minimum memory requested can be secured, before execution can start, or until the value specified in the query wait server configuration option is exceeded. Le type d’attente qui est accumulé dans ce scénario est RESOURCE_SEMAPHORE.The wait type that is accumulated in this scenario is RESOURCE_SEMAPHORE.

Important

Ne définissez pas l’option de configuration du serveur min memory per query sur une valeur trop élevée, en particulier sur des systèmes très sollicités, car cela peut aboutir à :Do not set the min memory per query server configuration option too high, especially on very busy systems, because doing so could lead to:

  • Une concurrence accrue pour les ressources mémoire.Increased competition for memory resources.
  • Une concurrence réduite en augmentant la quantité de mémoire pour chaque requête individuelle, même si la mémoire nécessaire à l’exécution est inférieure à cette configuration.Decreased concurrency by increasing the amount of memory for every single query, even if the required memory at runtime is lower that this configuration.

Pour obtenir des recommandations sur l’utilisation de cette configuration, consultez Configurer l’option de configuration de serveur min memory per query.For recommendations on using this configuration, see Configure the min memory per query Server Configuration Option.

Considérations sur l’allocation de mémoireMemory grant considerations

Pour l’exécution en mode ligne, l’allocation de mémoire initiale ne peut être dépassée en aucune circonstance.For row mode execution, the initial memory grant cannot be exceeded under any condition. Si plus de mémoire que l’allocation initiale est nécessaire pour exécuter des opérations de hachage ou de tri, leur dépassement est transféré sur le disque.If more memory than the initial grant is needed to execute hash or sort operations, then these will spill to disk. Une opération de hachage qui connaît un dépassement est prise en charge par un fichier de travail dans TempDB, tandis qu’une opération de tri avec dépassement est prise en charge par une table de travail.A hash operation that spills is supported by a Workfile in TempDB, while a sort operation that spills is supported by a Worktable.

Un dépassement qui se produit pendant une opération de tri est appelé avertissement de tri.A spill that occurs during a Sort operation is known as a Sort Warning. Les avertissements de tri indiquent que les opérations de tri ne peuvent pas être effectuées en mémoire.Sort warnings indicate that sort operations do not fit into memory. Ceci n’inclut pas les opérations de tri impliquant la création d’index, mais seulement les opérations de tri effectuées dans une requête (comme une clause ORDER BY utilisée dans une instruction SELECT).This does not include sort operations involving the creation of indexes, only sort operations within a query (such as an ORDER BY clause used in a SELECT statement).

Un dépassement qui se produit pendant une opération de hachage est appelé avertissement de hachage.A spill that occurs during a hash operation is known as a Hash Warning. Ceci se produit quand une récurrence de hachage ou une cessation de hachage (interruption de hachage) s’est produite pendant une opération de hachage.These occur when a hash recursion or cessation of hashing (hash bailout) has occurred during a hashing operation.

  • Une récurrence de hachage se produit lorsque l'entrée de construction n'est pas adaptée à la mémoire disponible, ce qui entraîne une fragmentation de l'entrée en plusieurs parties traitées séparément.Hash recursion occurs when the build input does not fit into available memory, resulting in the split of input into multiple partitions that are processed separately. Si une de ces partitions n’est toujours pas adaptée à la mémoire disponible, elle est à nouveau fragmentée en sous-partitions, qui sont également traitées séparément.If any of these partitions still do not fit into available memory, it is split into sub-partitions, which are also processed separately. Ce processus de fragmentation se poursuit jusqu’à ce que toutes les partitions soient adaptées à la mémoire disponible ou jusqu’à ce que le niveau maximal de récursivité soit atteint.This splitting process continues until each partition fits into available memory or until the maximum recursion level is reached.
  • L'interruption de hachage a lieu lorsqu'une opération de hachage atteint son niveau maximal de récursivité et se décale à un plan auxiliaire pour traiter les données partitionnées restantes.Hash bailout occurs when a hashing operation reaches its maximum recursion level and shifts to an alternate plan to process the remaining partitioned data. Ces événements peuvent entraîner une baisse des performances de votre serveur.These events can cause reduced performance in your server.

Pour l’exécution en mode batch, l’allocation de mémoire initiale peut augmenter dynamiquement jusqu’à un certain seuil interne par défaut.For batch mode execution, the initial memory grant can dynamically increase up to a certain internal threshold by default. Ce mécanisme d’allocation de mémoire dynamique est conçu pour permettre l’exécution en mémoire des opérations de hachage ou de tri qui s’exécutent en mode batch.This dynamic memory grant mechanism is designed to allow memory resident execution of hash or sort operations running in batch mode. Si ces opérations ne tiennent toujours pas dans la mémoire, elles sont transférées sur le disque.If these operations still do not fit into memory, then these will spill to disk.

Pour plus d’informations sur les modes d’exécution, consultez le Guide d’architecture de traitement des requêtes.For more information on execution modes, see the Query Processing Architecture Guide.

Gestion des tamponsBuffer management

L'objectif principal d'une base de données SQL ServerSQL Server est de stocker et de récupérer les données, l'utilisation intensive d'E/S sur disque est donc une caractéristique centrale du moteur de base de données.The primary purpose of a SQL ServerSQL Server database is to store and retrieve data, so intensive disk I/O is a core characteristic of the Database Engine. Étant donné que les opérations d'E/S sur disque peuvent consommer beaucoup de ressources et durent relativement longtemps, SQL ServerSQL Server s'attache à rendre ces opérations efficaces.And because disk I/O operations can consume many resources and take a relatively long time to finish, SQL ServerSQL Server focuses on making I/O highly efficient. La gestion des tampons joue un rôle essentiel pour parvenir à cette efficacité.Buffer management is a key component in achieving this efficiency. Le composant de gestion des tampons comprend deux mécanismes : le gestionnaire de tampons qui permet d’accéder et de mettre à jour les pages de la base de données, et le cache des tampons (également appelé pool de tampons), qui permet de réduire les opérations d’E/S du fichier de la base de données.The buffer management component consists of two mechanisms: the buffer manager to access and update database pages, and the buffer cache (also called the buffer pool), to reduce database file I/O.

Fonctionnement de la gestion des tamponsHow buffer management works

Un tampon est une page de 8 Ko en mémoire dont la taille est similaire à une page d’index ou de données.A buffer is an 8 KB page in memory, the same size as a data or index page. Ainsi, le cache des tampons est divisé en pages de 8 Ko.Thus, the buffer cache is divided into 8 KB pages. Le gestionnaire des tampons gère les fonctions de lecture des pages d'index ou de données à partir des fichiers de disque de base de données dans le cache de tampons ainsi que la réécriture sur le disque des pages modifiées.The buffer manager manages the functions for reading data or index pages from the database disk files into the buffer cache and writing modified pages back to disk. Une page reste dans le cache des tampons jusqu'à ce que le gestionnaire de tampons ait besoin de la zone de mémoire tampon pour lire davantage de données.A page remains in the buffer cache until the buffer manager needs the buffer area to read in more data. Les données ne sont réécrites sur le disque que si elles sont modifiées.Data is written back to disk only if it is modified. Les données dans le cache de tampons peuvent être modifiées plusieurs fois avant leur réécriture sur le disque.Data in the buffer cache can be modified multiple times before being written back to disk. Pour plus d’informations, consultez Lecture de pages et Écriture de pages.For more information, see Reading Pages and Writing Pages.

Lorsque SQL ServerSQL Server démarre, il calcule la taille de l’espace d’adressage virtuel pour le cache des tampons d’après plusieurs paramètres, dont la quantité de mémoire physique du système, le nombre de threads serveur maximum configuré et diverses options de démarrage.When SQL ServerSQL Server starts, it computes the size of virtual address space for the buffer cache based on a number of parameters such as the amount of physical memory on the system, the configured number of maximum server threads, and various startup parameters. SQL ServerSQL Server réserve la quantité ainsi calculée de son espace d’adressage virtuel de processus (appelée cible mémoire) pour le cache des tampons, mais il acquiert (valide) uniquement la quantité de mémoire physique nécessaire pour la charge actuelle.reserves this computed amount of its process virtual address space (called the memory target) for the buffer cache, but it acquires (commits) only the required amount of physical memory for the current load. Vous pouvez interroger les colonnes bpool_commit_target et bpool_committed dans la vue du catalogue sys.dm_os_sys_info pour retourner le nombre de pages réservées comme cible mémoire et le nombre de pages actuellement réservées dans le cache des tampons, respectivement.You can query the bpool_commit_target and bpool_committed columns in the sys.dm_os_sys_info catalog view to return the number of pages reserved as the memory target and the number of pages currently committed in the buffer cache, respectively.

L’intervalle entre le démarrage de SQL ServerSQL Server et le moment où la mémoire tampon obtient sa cible de mémoire s’appelle l’accélération.The interval between SQL ServerSQL Server startup and when the buffer cache obtains its memory target is called ramp-up. Au cours de cette opération, les tampons se remplissent de demandes de lecture selon les besoins.During this time, read requests fill the buffers as needed. Par exemple, une demande de lecture d’une page de 8 Ko unique remplit une page de tampon unique.For example, a single 8 KB page read request fills a single buffer page. Cela signifie que l'accélération dépend du nombre et du type des demandes clientes.This means the ramp-up depends on the number and type of client requests. L’accélération s’effectue par la transformation des demandes de lecture de page unique en demandes de huit pages alignées (ce qui constitue une étendue).Ramp-up is expedited by transforming single page read requests into aligned eight page requests (making up one extent). Cette opération permet au processus d'accélération de s'achever plus rapidement en particulier sur les ordinateurs possédant beaucoup de mémoire.This allows the ramp-up to finish much faster, especially on machines with a lot of memory. Pour plus d’informations sur les pages et les étendues, consultez Guide d’architecture des pages et des étendues.For more information about pages and extents, refer to Pages and Extents Architecture Guide.

Comme le gestionnaire de tampons consomme l'essentiel de la mémoire dans les processus SQL ServerSQL Server , il collabore avec le gestionnaire de la mémoire afin de permettre aux autres composants d'utiliser ses tampons.Because the buffer manager uses most of the memory in the SQL ServerSQL Server process, it cooperates with the memory manager to allow other components to use its buffers. Le gestionnaire de tampons interagit essentiellement avec les composants suivants :The buffer manager interacts primarily with the following components:

  • Le gestionnaire de ressources pour contrôler l'utilisation de l'ensemble de la mémoire et, sur les plateformes 32 bits, pour contrôler l'utilisation de l'espace d'adressage.Resource manager to control overall memory usage and, in 32-bit platforms, to control address space usage.
  • Le gestionnaire de base de données et le système d’exploitation SQL ServerSQL Server (SQLOS) pour les opérations d’E/S de fichier peu importantes.Database manager and the SQL ServerSQL Server Operating System (SQLOS) for low-level file I/O operations.
  • le gestionnaire du journal pour la journalisation préalable.Log manager for write-ahead logging.

Fonctionnalités prises en chargeSupported Features

Le gestionnaire de tampons prend en charge les fonctionnalités suivantes.The buffer manager supports the following features:

  • Le gestionnaire de tampons est compatible avec la technologie NUMA (Non-Uniform Memory Access) .The buffer manager is non-uniform memory access (NUMA) aware. Les pages de cache des tampons sont réparties sur les nœuds NUMA matériels, ce qui permet à un thread d'accéder à une page de tampons allouée sur le nœud NUMA local au lieu de la mémoire étrangère.Buffer cache pages are distributed across hardware NUMA nodes, which allows a thread to access a buffer page that is allocated on the local NUMA node rather than from foreign memory.

  • Le gestionnaire de tampons prend en charge l’ajout de mémoire à chaud, ce qui permet aux utilisateurs d’ajouter de la mémoire physique sans redémarrer le serveur.The buffer manager supports Hot Add Memory, which allows users to add physical memory without restarting the server.

  • Le gestionnaire de tampons prend en charge les grandes pages sur les plateformes 64 bits.The buffer manager supports large pages on 64-bit platforms. La taille de la page est spécifique à la version de Windows.The page size is specific to the version of Windows.

    Notes

    Avant SQL Server 2012 (11.x)SQL Server 2012 (11.x), l’activation des grandes pages dans SQL ServerSQL Server nécessitait l’indicateur de trace 834.Prior to SQL Server 2012 (11.x)SQL Server 2012 (11.x), enabling large pages in SQL ServerSQL Server requires trace flag 834.

  • Le gestionnaire de tampons fournit les diagnostics supplémentaires exposés par le biais des vues de gestion dynamique.The buffer manager provides additional diagnostics that are exposed through dynamic management views. Vous pouvez utiliser ces affichages pour contrôler un ensemble de ressources du système d'exploitation spécifiques à SQL ServerSQL Server.You can use these views to monitor a variety of operating system resources that are specific to SQL ServerSQL Server. Par exemple, vous pouvez utiliser la vue sys.dm_os_buffer_descriptors pour surveiller les pages dans le cache des tampons.For example, you can use the sys.dm_os_buffer_descriptors view to monitor the pages in the buffer cache.

E/S disqueDisk I/O

Le gestionnaire de tampons n'effectue que des lectures et des écritures dans la base de données.The buffer manager only performs reads and writes to the database. Les autres opérations de base de données et de fichier comme les opérations d'ouverture, de fermeture, d'élargissement et de compactage sont prises en charge par les composants du gestionnaire de base de données et du gestionnaire de fichiers.Other file and database operations such as open, close, extend, and shrink are performed by the database manager and file manager components.

Les opérations d'E/S disque effectuées par le gestionnaire de tampons présentent les caractéristiques suivantes :Disk I/O operations by the buffer manager have the following characteristics:

  • Toutes les opérations d'E/S s'effectuent de manière asynchrone, ce qui permet au thread appelant de continuer le traitement durant l'opération d'E/S en arrière-plan.All I/Os are performed asynchronously, which allows the calling thread to continue processing while the I/O operation takes place in the background.
  • Toutes les opérations d'E/S ont lieu dans des threads appelants, sauf si l'option affinity I/O est utilisée.All I/Os are issued in the calling threads unless the affinity I/O option is in use. L'option affinity I/O mask lie les E/S disque de SQL ServerSQL Server à un sous-ensemble de processeurs spécifié.The affinity I/O mask option binds SQL ServerSQL Server disk I/O to a specified subset of CPUs. Dans les environnements de traitement transactionnel en ligne (OLTP) SQL ServerSQL Server haut de gamme, cette extension permet d'améliorer les performances des threads SQL ServerSQL Server émettant des E/S.In high-end SQL ServerSQL Server online transactional processing (OLTP) environments, this extension can enhance the performance of SQL ServerSQL Server threads issuing I/Os.
  • Les E/S de pages multiples s'effectuent à l'aide d'E/S par fragmentation-rassemblement, ce qui permet le transfert des données dans des zones contiguës de la mémoire ou hors de celles-ci.Multiple page I/Os are accomplished with scatter-gather I/O, which allows data to be transferred into or out of noncontiguous areas of memory. Cela signifie que SQL ServerSQL Server peut remplir ou vider rapidement le cache de tampons tout en évitant les demandes d'E/S physiques multiples.This means that SQL ServerSQL Server can quickly fill or flush the buffer cache while avoiding multiple physical I/O requests.

Longues demandes d'E/SLong I/O requests

Le gestionnaire de tampons signale les demandes d'E/S en suspens pendant un délai minimum de 15 secondes.The buffer manager reports on any I/O request that has been outstanding for at least 15 seconds. L'administrateur système peut ainsi distinguer entre les problèmes SQL ServerSQL Server et les problèmes au niveau du sous-système d'E/S.This helps the system administrator distinguish between SQL ServerSQL Server problems and I/O subsystem problems. Le message d’erreur 833 est rapporté et consigné dans le journal des erreurs SQL ServerSQL Server comme suit :Error message 833 is reported and appears in the SQL ServerSQL Server error log as follows:

SQL Server has encountered ## occurrence(s) of I/O requests taking longer than 15 seconds to complete on file [##] in database [##] (#). The OS file handle is 0x00000. The offset of the latest long I/O is: 0x00000.

Une longue opération d'E/S peut correspondre à une opération de lecture ou d'écriture ; celle-ci ne figure pas dans le message actif.A long I/O may be either a read or a write; it is not currently indicated in the message. Les messages d'opérations d'E/S longues sont des avertissements pas des erreurs.Long-I/O messages are warnings, not errors. Ils n’indiquent pas de problèmes avec SQL ServerSQL Server, mais avec le système d’E/S sous-jacent.They do not indicate problems with SQL ServerSQL Server but with the underlying I/O system. Les messages permettent à l'administrateur de détecter la cause des temps de réponse SQL ServerSQL Server médiocres plus rapidement et de distinguer les problèmes qui ne dépendent pas de SQL ServerSQL Server.The messages are reported to help the system administrator find the cause of poor SQL ServerSQL Server response times more quickly, and to distinguish problems that are outside the control of SQL ServerSQL Server. De ce fait, ces problèmes ne demandent aucune intervention, mais il est nécessaire que l'administrateur système analyse les raisons de la lenteur de la demande d'E/S et si ce délai est justifié.As such, they do not require any action, but the system administrator should investigate why the I/O request took so long, and whether the time is justifiable.

Facteurs de longues demandes d'E/SCauses of Long-I/O Requests

Un message signalant une opération d'E/S longue peut indiquer qu'une E/S est bloquée de manière permanente et ne peut s'achever (E/S perdue) ou qu'elle ne s'est pas encore terminée.A long-I/O message may indicate that an I/O is permanently blocked and will never complete (known as lost I/O), or merely that it just has not completed yet. Il est impossible d’identifier le type de scénario à partir du message, même si une E/S perdue entraîne souvent un délai d’attente de verrou.It is not possible to tell from the message which scenario is the case, although a lost I/O will often lead to a latch timeout.

Une opération d'E/S longue indique souvent une charge de travail SQL ServerSQL Server trop intense pour le sous-système de disque.Long I/Os often indicate a SQL ServerSQL Server workload that is too intense for the disk subsystem. Un sous-système de disque inapproprié peut se manifester dans les cas suivants :An inadequate disk subsystem may be indicated when:

  • plusieurs opérations d'E/S longues dans le journal d'erreurs au cours d'une charge SQL ServerSQL Server importante ;Multiple long I/O messages appear in the error log during a heavy SQL ServerSQL Server workload.
  • les compteurs de performance indiquent des latences de disque longues, des files d'attente de disque longues ou pas d'inactivité de disque.Perfmon counters show long disk latencies, long disk queues, or no disk idle time.

Les opérations d'E/S longues sont aussi parfois causées par un composant dans le chemin d'accès d'E/S (un pilote, un contrôleur, un microprogramme, entre autres) qui retardent continuellement une demande d'E/S antérieure pour traiter des demandes plus récentes dont la position actuelle est plus proche de la tête de disque.Long I/Os may also be caused by a component in the I/O path (for example, a driver, controller, or firmware) continually postponing servicing an old I/O request in favor of servicing newer requests that are closer to the current position of the disk head. La technique courante de traitement prioritaire des demandes en fonction de la proximité de celles-ci de la tête de lecture-écriture est connue sous le nom de « elevator seeking ».The common technique of processing requests in priority based upon which ones are closest to the current position of the read/write head is known as "elevator seeking." Cette technique peut ne pas être compatible avec l'outil Moniteur système Windows (PERFMON.EXE) en raison du traitement rapide de la plupart des E/S.This may be difficult to corroborate with the Windows System Monitor (PERFMON.EXE) tool because most I/Os are being serviced promptly. Les opérations d'E/S longues peuvent se compliquer en raison de charges de travail impliquant de grandes quantités d'E/S séquentielle, parmi lesquelles figurent les opérations de sauvegarde et de restauration, les analyses de table, les tris, les créations d'index, les chargements en masse et les réinitialisations de fichiers.Long I/O requests can be aggravated by workloads that perform large amounts of sequential I/O, such as backup and restore, table scans, sorting, creating indexes, bulk loads, and zeroing out files.

Les opérations d'E/S longues isolées qui ne présentent à priori aucun rapport avec les conditions décrites plus haut sont peut-être causées par un problème de matériel ou de pilote.Isolated long I/Os that do not appear related to any of the previous conditions may be caused by a hardware or driver problem. Le journal d'événements système peut contenir un événement connexe qui permet de diagnostiquer le problème.The system event log may contain a related event that helps to diagnose the problem.

Détection de la forte sollicitation de la mémoireMemory pressure detection

La forte sollicitation de la mémoire est une situation résultant d’un manque de mémoire et peut entraîner les effets suivants :Memory pressure is a condition resulting from memory shortage, and can result in:

  • E/S supplémentaires (par exemple un thread d’arrière-plan d’écriture différée très actif)Extra I/Os (such as very active lazy writer background thread)
  • Taux de recompilation plus élevéHigher recompile ratio
  • Exécution plus longue des requêtes (dans le cas où des allocations de mémoire sont en attente)Longer running queries (if memory grant waits exist)
  • Cycles d’UC supplémentairesExtra CPU cycles

Cette situation peut être déclenchée pour des raisons externes ou internes.This situation can be triggered by external or internal causes. Les raisons externes peuvent être les suivantes :External causes include:

  • La mémoire physique (RAM) disponible est faible.Available physical memory (RAM) is low. Ceci fait que le système raccourcit les plages de travail des processus actuellement en cours d’exécution, ce qui peut aboutir à un ralentissement global.This causes the system to trim working sets of currently running processes, which may result in overall slowdown. SQL ServerSQL Server peut réduire la cible de validation du pool de mémoires tampons et commencer à réduire les caches internes plus souvent.may reduce the commit target of the buffer pool and start trimming internal caches more often.
  • La mémoire système globale disponible (qui inclut le fichier d’échange système) est faible.Overall available system memory (which includes the system page file) is low. Ceci peut entraîner l’échec des allocations de mémoire par le système, car il ne peut pas paginer la mémoire actuellement allouée.This may cause the system to fail memory allocations, as it is unable to page out currently allocated memory. Les raisons internes peuvent être les suivantes :Internal causes include:
  • En réponse à une forte sollicitation de la mémoire externe, quand le Moteur de base de données SQL ServerSQL Server Database Engine définit des limites plus basses d’utilisation de la mémoire.Responding to the external memory pressure, when the Moteur de base de données SQL ServerSQL Server Database Engine sets lower memory usage caps.
  • Les paramètres mémoire ont été abaissés manuellement via une réduction de la configuration de max server memory.Memory settings were manually lowered by reducing the max server memory configuration.
  • Des modifications de la distribution en mémoire de composants internes entre les différents caches.Changes in memory distribution of internal components between the several caches.

Le Moteur de base de données SQL ServerSQL Server Database Engine implémente une infrastructure dédiée à la détection et à la gestion de la forte sollicitation de la mémoire dans le cadre de sa gestion de la mémoire dynamique.The Moteur de base de données SQL ServerSQL Server Database Engine implements a framework dedicated to detecting and handling memory pressure, as part of its dynamic memory management. Cette infrastructure inclut la tâche d’arrière-plan appelée Moniteur de ressource.This framework includes the backgroud task called Resource Monitor. La tâche Moniteur de ressource surveille l’état des indicateurs de la mémoire interne et externe.The Resource Monitor task monitors the state of external and internal memory indicators. Une fois qu’un de ces indicateurs change d’état, il calcule la notification correspondante et la diffuse.Once one of these indicators changes status, it calculates the corresponding notification and it broadcasts it. Ces notifications sont des messages internes provenant de chacun des composants du moteur et elles sont stockées dans des mémoires tampons en anneau.These notifications are internal messages from each of the engine components, and stored in ring buffers.

Deux mémoires tampons en anneau contiennent des informations relatives à la gestion de la mémoire dynamique :Two ring buffers hold information relevant to dynamic memory management:

  • La mémoire tampon en anneau Moniteur de ressource, qui assure le suivi de l’activité du Moniteur de ressource, par exemple si une forte sollicitation de la mémoire a été ou non signalée.The Resource Monitor ring buffer, which tracks Resource Monitor activity like was memory pressure signaled or not. Cette mémoire tampon en anneau contient des informations d’état dépendant de la condition actuelle de RESOURCE_MEMPHYSICAL_HIGH, RESOURCE_MEMPHYSICAL_LOW, RESOURCE_MEMPHYSICAL_STEADY ou RESOURCE_MEMVIRTUAL_LOW.This ring buffer has status information depending on the current condition of RESOURCE_MEMPHYSICAL_HIGH, RESOURCE_MEMPHYSICAL_LOW, RESOURCE_MEMPHYSICAL_STEADY, or RESOURCE_MEMVIRTUAL_LOW.
  • La mémoire tampon Gestionnaire d’allocation mémoire, qui contient des enregistrements des notifications de mémoire pour chaque pool de ressources de Resource Governor.The Memory Broker ring buffer, which contains records of memory notifications for each Resource Governor resource pool. Comme une forte sollicitation de la mémoire interne est détectée, une notification de mémoire insuffisante est activée pour les composants qui allouent de la mémoire, de façon à déclencher des actions destinées à équilibrer la mémoire entre les caches.As internal memory pressure is detected, low memory notification is turned on for components that allocate memory, to trigger actions meant to balance the memory between caches.

Les gestionnaires d’allocation mémoire surveillent la consommation de la demande de mémoire par chaque composant et, en fonction des informations collectées, ils calculent une valeur optimale de mémoire pour chacun de ces composants.Memory brokers monitor the demand consumption of memory by each component and then based on the information collected, it calculates and optimal value of memory for each of these components. Il existe un ensemble de gestionnaires pour chaque pool de ressources du Resource Governor.There is a set of brokers for each Resource Governor resource pool. Ces informations sont diffusées auprès de chacun des composants, qui augmente ou diminue son utilisation en fonction de ce qui lui est indiqué.This information is then broadcast to each of the components, which grow or shrink their usage as required. Pour plus d’informations sur les gestionnaires d’allocation mémoire, consultez sys.dm_os_memory_brokers.For more information about memory brokers, see sys.dm_os_memory_brokers.

Détection d'erreursError Detection

Les pages de base de données peuvent faire appel à deux mécanismes facultatifs qui permettent de garantir l'intégrité de la page depuis son écriture sur le disque à sa relecture : les protections de la somme de contrôle et de la page endommagée.Database pages can use one of two optional mechanisms that help insure the integrity of the page from the time it is written to disk until it is read again: torn page protection and checksum protection. Ces mécanismes offrent une méthode indépendante de vérification de l'exactitude du stockage des données ainsi que des composants matériels tels que les contrôleurs, les pilotes, les câbles et même le système d'exploitation.These mechanisms allow an independent method of verifying the correctness of not only the data storage, but hardware components such as controllers, drivers, cables, and even the operating system. La protection est ajoutée à la page juste avant l'écriture sur le disque, puis elle est vérifiée après sa lecture sur le disque.The protection is added to the page just before writing it to disk, and verified after it is read from disk.

SQL ServerSQL Server procède à quatre nouvelles tentatives pour une lecture qui échoue avec une erreur de somme de contrôle, de page endommagée ou d'E/S disque.will retry any read that fails with a checksum, torn page, or other I/O error four times. Si la lecture réussit lors d'une de ces tentatives, un message est écrit dans le journal des erreurs et l'exécution de la commande qui a déclenché la lecture se poursuit.If the read is successful in any one of the retry attempts, a message will be written to the error log and the command that triggered the read will continue. Si les tentatives de lecture échouent, la commande échoue elle aussi avec le message d'erreur 824.If the retry attempts fail, the command will fail with error message 824.

Le type de protection de page utilisé est un attribut de la base de données qui contient la page.The kind of page protection used is an attribute of the database containing the page. La protection de la somme de contrôle est la protection par défaut pour les bases de données créées dans SQL Server 2005 (9.x)SQL Server 2005 (9.x) et les versions ultérieures.Checksum protection is the default protection for databases created in SQL Server 2005 (9.x)SQL Server 2005 (9.x) and later. Le mécanisme de protection de page est spécifié au moment de la création de la base de données et peut être modifié avec ALTER DATABASE SET.The page protection mechanism is specified at database creation time, and may be altered by using ALTER DATABASE SET. Vous pouvez déterminer le paramètre de protection de page en cours en interrogeant la colonne page_verify_option de l’affichage catalogue sys.databases ou la propriété IsTornPageDetectionEnabled de la fonction DATABASEPROPERTYEX.You can determine the current page protection setting by querying the page_verify_option column in the sys.databases catalog view or the IsTornPageDetectionEnabled property of the DATABASEPROPERTYEX function.

Notes

En cas de modification du paramètre de protection de page, le nouveau paramètre ne prend pas immédiatement effet dans l'ensemble de la base de données.If the page protection setting is changed, the new setting does not immediately affect the entire database. Par contre, les pages adoptent le niveau de protection en cours de la base de données lors de leur écriture ultérieure.Instead, pages adopt the current protection level of the database whenever they are written next. Cela signifie que la base de données peut contenir des pages utilisant différents types de protection.This means that the database may be composed of pages with different kinds of protection.

Protection de page endommagéeTorn Page Protection

La protection de page endommagée, introduite dans SQL ServerSQL Server 2000, est essentiellement une méthode de détection des pages endommagées causées par les pannes d’alimentation.Torn page protection, introduced in SQL ServerSQL Server 2000, is primarily a way of detecting page corruptions due to power failures. Par exemple, une panne d'alimentation inattendue peut n'entraîner que l'écriture partielle d'une page sur le disque.For example, an unexpected power failure may leave only part of a page written to disk. Quand la protection contre les pages endommagées est utilisée, un modèle de signature 2 bits spécifique pour chaque secteur de 512 octets d’une page de base de données de 8 kilo-octets (Ko) est stocké dans l’en-tête de la page quand celle-ci est écrite sur le disque.When torn page protection is used, a specific 2-bit signature pattern for each 512-byte sector in the 8-kilobyte (KB) database page and stored in the database page header when the page is written to disk. Lorsque la page est ensuite lue à partir du disque, les bits endommagés stockés dans l'en-tête de la page sont comparés aux informations réelles du secteur concerné.When the page is read from disk, the torn bits stored in the page header are compared to the actual page sector information. Le modèle de signature alterne entre des binaires 01 et 10 à chaque opération d’écriture. Il est donc toujours possible de savoir si seule une partie des secteurs a été écrite sur le disque : si un bit est dans le mauvais état lors de la lecture ultérieure de la page, celle-ci a été écrite de manière incorrecte et une page endommagée est détectée.The signature pattern alternates between binary 01 and 10 with every write, so it is always possible to tell when only a portion of the sectors made it to disk: if a bit is in the wrong state when the page is later read, the page was written incorrectly and a torn page is detected. Ce type de détection fait appel à des ressources minimales ; cependant, elle ne détecte pas toutes les erreurs causées par les pannes de matériel des disques.Torn page detection uses minimal resources; however, it does not detect all errors caused by disk hardware failures. Pour plus d’informations sur la définition de la détection des pages endommagées, consultez Options ALTER DATABASE SET (Transact-SQL).For information on setting torn page detection, see ALTER DATABASE SET Options (Transact-SQL).

Protection de la somme de contrôleChecksum Protection

La protection de la somme de contrôle, introduite dans SQL Server 2005 (9.x)SQL Server 2005 (9.x), fournit une vérification renforcée de l’intégrité des données.Checksum protection, introduced in SQL Server 2005 (9.x)SQL Server 2005 (9.x), provides stronger data integrity checking. Une somme de contrôle est calculée pour les données de chaque page écrite, elle est stockée dans l'en-tête de page.A checksum is calculated for the data in each page that is written, and stored in the page header. À chaque lecture d'une page contenant une somme de contrôle stockée sur le disque, le moteur de la base de données recalcule la somme de contrôle pour les données de la page et renvoie l'erreur 824 si la nouvelle somme de contrôle n'est pas identique à la somme de contrôle stockée.Whenever a page with a stored checksum is read from disk, the database engine recalculates the checksum for the data in the page and raises error 824 if the new checksum is different from the stored checksum. La protection de la somme de contrôle peut détecter un plus grand nombre d'erreurs que la protection de page endommagée car celle-ci est affectée par chaque octet de la page, elle utilise toutefois peu de ressources.Checksum protection can catch more errors than torn page protection because it is affected by every byte of the page, however, it is moderately resource intensive. Lorsque la somme de contrôle est activée, les erreurs causées par les pannes d'alimentation et du matériel ou des microprogrammes défectueux sont détectables à chaque lecture d'une page sur le disque par le gestionnaire de tampons.When checksum is enabled, errors caused by power failures and flawed hardware or firmware can be detected any time the buffer manager reads a page from disk. Pour plus d’informations sur la définition de la somme de contrôle, consultez Options ALTER DATABASE SET (Transact-SQL).For information on setting checksum, see ALTER DATABASE SET Options (Transact-SQL).

Important

Quand une base de données utilisateur ou système est mise à niveau vers SQL Server 2005 (9.x)SQL Server 2005 (9.x) ou une version ultérieure, la valeur de PAGE_VERIFY (NONE ou TORN_PAGE_DETECTION) est conservée.When a user or system database is upgraded to SQL Server 2005 (9.x)SQL Server 2005 (9.x) or a later version, the PAGE_VERIFY value (NONE or TORN_PAGE_DETECTION) is retained. Nous vous recommandons d'utiliser CHECKSUM.We recommend that you use CHECKSUM. Même si la valeur TORN_PAGE_DETECTION utilise moins de ressources, elle ne fournit qu'un sous-ensemble limité de la protection offerte par CHECKSUM.TORN_PAGE_DETECTION may use fewer resources but provides a minimal subset of the CHECKSUM protection.

Présentation de l'accès NUMA (Non-uniform Memory Access)Understanding Non-uniform Memory Access

SQL ServerSQL Server est compatible avec la technologie NUMA (Non-Uniform Memory Access) et fonctionne correctement avec l'accès NUMA matériel sans configuration particulière.is non-uniform memory access (NUMA) aware, and performs well on NUMA hardware without special configuration. À mesure que la vitesse et le nombre de processeurs augmentent, il devient de plus en plus difficile de réduire le temps de réponse de la mémoire requis pour exploiter cette puissance de traitement supplémentaire.As clock speed and the number of processors increase, it becomes increasingly difficult to reduce the memory latency required to use this additional processing power. Pour contourner ce problème, les fournisseurs de matériel proposent des caches L3 de grande capacité, mais cette solution présente des limites.To circumvent this, hardware vendors provide large L3 caches, but this is only a limited solution. L’architecture NUMA fournit une solution évolutive à ce problème.NUMA architecture provides a scalable solution to this problem. SQL ServerSQL Server a été conçu pour tirer parti des ordinateurs reposant sur la technologie NUMA sans qu’il soit nécessaire d’apporter des modifications aux applications.has been designed to take advantage of NUMA-based computers without requiring any application changes. Pour plus d’informations, consultez Procédure : Configurer SQL Serveur pour utiliser Soft-NUMA.For more information, see How to: Configure SQL Server to Use Soft-NUMA.

Voir aussiSee Also

Mémoire du serveur (option de configuration de serveur) Server Memory Server Configuration Options
Lecture de pages Reading Pages
Écriture de pages Writing Pages
Guide pratique pour configurer SQL Server pour utiliser Soft-NUMA How to: Configure SQL Server to Use Soft-NUMA
Exigences liées à l’utilisation des tables à mémoire optimisée Requirements for Using Memory-Optimized Tables
Résoudre les problèmes de mémoire insuffisante à l’aide de tables à mémoire optimiséeResolve Out Of Memory Issues Using Memory-Optimized Tables