Groupe de fichiers mémoire optimiséThe Memory Optimized Filegroup

S’APPLIQUE À : ouiSQL Server nonAzure SQL Database nonAzure Synapse Analytics (SQL DW) nonParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Pour créer des tables mémoire optimisées, vous devez d'abord créer un groupe de fichiers mémoire optimisé.To create memory-optimized tables, you must first create a memory-optimized filegroup. Le groupe de fichiers mémoire optimisé contient un ou plusieurs conteneurs.The memory-optimized filegroup holds one or more containers. Chaque conteneur contient des fichiers de données, des fichiers delta ou les deux.Each container contains data files or delta files or both.

Bien que les lignes de données dans les tables SCHEMA_ONLY ne soient pas conservées et que les métadonnées des tables à mémoire optimisée et des procédures stockées compilées en mode natif soient stockées dans des catalogues traditionnels, le moteur OLTP en mémoireIn-Memory OLTP requiert toujours un groupe de fichiers à mémoire optimisée pour les tables à mémoire optimisée SCHEMA_ONLY afin de fournir une expérience uniforme pour les bases de données avec des tables à mémoire optimisée.Even though data rows from SCHEMA_ONLY tables are not persisted and the metadata for memory-optimized tables and natively compiled stored procedures is stored in the traditional catalogs, the OLTP en mémoireIn-Memory OLTP engine still requires a memory-optimized filegroup for SCHEMA_ONLY memory-optimized tables to provide a uniform experience for databases with memory-optimized tables.

Le groupe de fichiers mémoire optimisé est basé sur le groupe de fichiers de flux de fichier, avec les différences suivantes :The memory-optimized filegroup is based on filestream filegroup, with the following differences:

  • Vous ne pouvez créer qu'un seul groupe de fichiers mémoire optimisé par base de données.You can only create one memory-optimized filegroup per database. Vous devez marquer explicitement le groupe de fichiers comme contenant memory_optimized_data.You need to explicitly mark the filegroup as containing memory_optimized_data. Vous pouvez créer le groupe de fichiers lorsque vous créez la base de données, ou vous pouvez l' ajouter ultérieurement :You can create the filegroup when you create the database or you can add it later:

    ALTER DATABASE imoltp ADD FILEGROUP imoltp_mod CONTAINS MEMORY_OPTIMIZED_DATA  
    
  • Vous devez ajouter un ou plusieurs conteneurs au groupe de fichiers MEMORY_OPTIMIZED_DATA.You need to add one or more containers to the MEMORY_OPTIMIZED_DATA filegroup. Par exemple :For example:

    ALTER DATABASE imoltp ADD FILE (name='imoltp_mod1', filename='c:\data\imoltp_mod1') TO FILEGROUP imoltp_mod  
    
  • Vous n’avez pas besoin d’activer le flux de fichier (Activer et configurer FILESTREAM) pour créer un groupe de fichiers mémoire optimisé.You do not need to enable filestream (Enable and Configure FILESTREAM) to create a memory-optimized filegroup. Le mappage au flux de fichier est effectué par le moteur OLTP en mémoireIn-Memory OLTP .The mapping to filestream is done by the OLTP en mémoireIn-Memory OLTP engine.

  • Vous pouvez ajouter de nouveaux conteneurs à un groupe de fichiers mémoire optimisé.You can add new containers to a memory-optimized filegroup. Vous pouvez avoir besoin d'un nouveau conteneur pour développer le stockage requis pour la table durable, mémoire optimisée, et également pour répartir les E/S sur plusieurs conteneurs.You may need a new container to expand the storage needed for durable memory-optimized table and also to distribute IO across multiple containers.

  • Le déplacement des données avec un groupe de fichiers mémoire optimisé est optimisé dans une configuration de groupe de disponibilité Always On.Data movement with a memory-optimized filegroup is optimized in an Always On Availability Group configuration. Contrairement aux fichiers de flux de fichier envoyés aux réplicas secondaires, les fichiers de point de contrôle (de données et delta) du groupe de fichiers mémoire optimisé ne sont pas envoyés aux réplicas secondaires.Unlike filestream files that are sent to secondary replicas, the checkpoint files (both data and delta) within the memory-optimized filegroup are not sent to secondary replicas. Les fichiers de données et delta sont construits à l'aide du journal des transactions sur le réplica secondaire.The data and delta files are constructed using the transaction log on the secondary replica.

Les limitations suivantes s’appliquent à un groupe de fichiers optimisé en mémoire :The following limitations apply to a memory-optimized filegroup:

  • Une fois que vous utilisez un groupe de fichiers à mémoire optimisée, vous ne pouvez le supprimer qu’en supprimant la base de données.Once you use a memory-optimized filegroup, you can only remove it by dropping the database. Dans un environnement de production, il est peu probable que vous deviez supprimer le groupe de fichiers mémoire optimisé.In a production environment, it is unlikely that you will need to remove the memory-optimized filegroup.

  • Vous ne pouvez pas supprimer un conteneur non vide ni déplacer des paires de fichiers de données et delta vers un autre conteneur dans le groupe de fichiers mémoire optimisé.You cannot drop a non-empty container or move data and delta file pairs to another container in the memory-optimized filegroup.

Configuration d'un groupe de fichiers mémoire optimiséConfiguring a Memory-Optimized Filegroup

Envisagez de créer plusieurs conteneurs dans le groupe de fichiers à mémoire optimisée et de les répartir sur différents lecteurs afin d’obtenir davantage de bande passante pour transmettre en continu les données en mémoire.Consider creating multiple containers in the memory-optimized filegroup and distribute them on different drives to achieve more bandwidth to stream the data into memory.

Dans un scénario à plusieurs conteneurs et à plusieurs lecteurs, les fichiers de données et delta sont alloués dans des conteneurs selon le principe du tourniquet.In a multiple container, multiple drive scenario, data and delta files are allocated in a round-robin fashion into containers. Le premier fichier de données est alloué depuis le premier conteneur, le fichier delta depuis le conteneur suivant, et ainsi de suite.The first data file is allocated from the first container and the delta file is allocated from the next container and this allocation pattern repeats. Cette méthode d'allocation répartit les fichiers de données et delta de manière uniforme entre les conteneurs si vous avez un nombre impair de lecteurs, chacun étant mappé à un conteneur.This allocation scheme distributes data and delta files evenly across containers if you have an odd number of drives, each mapped to one container. Toutefois, si vous avez un nombre pair de lecteurs, chacun étant mappé à un conteneur, cela peut entraîner un stockage déséquilibré, les fichiers de données étant mappés aux lecteurs impairs et les fichiers delta aux lecteurs pairs.However, if you have an even number of drives, each mapped to a container, it can result in imbalanced storage with data files mapped to odd drives and delta files mapped to even drives. Pour obtenir un flux équilibré d’E/S lors de la récupération, envisagez de placer des paires de fichiers de données et delta sur les mêmes broches/stockages.To obtain a balanced stream of I/O on recovery, consider placing pairs of data and delta files on the same spindles/storage.

Lors de la configuration du stockage, vous devez fournir un espace libre correspondant à quatre fois la taille des tables mémoire optimisées durables.When configuring storage, you must provide free disk space that is four times the size of durable memory-optimized tables. Vérifiez également que votre sous-système d’E/S prend en charge les IOPS nécessaires pour votre charge de travail.Also ensure that your I/O subsystem supports the required IOPS for your workload. Si les paires de fichiers de données et delta sont définies à un niveau d’IOPS donné, vous avez besoin de trois fois cette valeur d’IOPS pour tenir compte des opérations de stockage et de fusion.If data and delta file pairs are populated at a given IOPS, you need three times that IOPS to account for storing and merge operations. Vous pouvez ajouter une capacité de stockage et des IOPS en ajoutant un ou plusieurs conteneurs au groupe de fichiers mémoire optimisé.You can add storage capacity and IOPS by adding one or more containers to the memory-optimized filegroup.

Attention

Si une valeur MAXSIZE est définie pour le groupe de fichiers à mémoire optimisée et que les fichiers de point de contrôle dépassent la taille maximale du conteneur, la base de données présente l’état SUSPECT.If a MAXSIZE value is set for the memory-optimized filegroup, and checkpoint files exceed the max size of the container, then the database will become SUSPECT.
Dans ce cas, n’essayez pas de définir les options OFFLINE et ONLINE de base de données, ce qui amène la base de données à rester dans l’état RECOVERY_PENDING.In this case do not attempt to set the database OFFLINE and ONLINE, causing the database to stay in RECOVERY_PENDING state.

Voir aussiSee Also

Création et gestion du stockage des objets mémoire optimisésCreating and Managing Storage for Memory-Optimized Objects
Database Files and Filegroups Database Files and Filegroups
Options de fichiers et de groupes de fichiers ALTER DATABASE (Transact-SQL)ALTER DATABASE File and Filegroup Options (Transact-SQL)