Groupe de fichiers à mémoire optimisée

S'applique à :SQL Server

Pour créer des tables mémoire optimisées, vous devez d'abord créer un groupe de fichiers mémoire optimisé. Le groupe de fichiers mémoire optimisé contient un ou plusieurs conteneurs. Chaque conteneur contient des fichiers de données, des fichiers delta ou les deux.

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 d’OLTP en mémoire 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.

Le groupe de fichiers à mémoire optimisée repose sur le groupe de fichiers FILESTREAM, avec les différences suivantes :

  • Vous ne pouvez créer qu'un seul groupe de fichiers mémoire optimisé par base de données. Vous devez marquer explicitement le groupe de fichiers comme contenant 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 :

    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. Par exemple :

    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é. Le mappage au flux de fichier est effectué par le moteur d’OLTP en mémoire.

  • Vous pouvez ajouter de nouveaux conteneurs à un groupe de fichiers mémoire optimisé. Vous pouvez avoir besoin d’un nouveau conteneur pour augmenter la capacité de stockage nécessaire à une table durable optimisée en mémoire, ainsi que pour répartir les E/S sur plusieurs conteneurs.

  • 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. Contrairement aux fichiers FILESTREAM qui sont envoyés aux réplicas secondaires, les fichiers de point de contrôle (de données et de delta) du groupe de fichiers à mémoire optimisée ne sont pas envoyés aux réplicas secondaires. Les fichiers de données et les fichiers delta sont générés à l’aide du journal de transactions sur la réplique secondaire.

Remarque

Dans SQL Server 2022 (16.x) et les versions antérieures, une fois que vous utilisez un groupe de fichiers optimisé en mémoire, vous ne pouvez le supprimer qu’en supprimant la base de données. Vous ne pouvez pas supprimer un conteneur non vide ou supprimer le dernier conteneur restant même s’il est vide. Vous ne pouvez pas également déplacer des paires de données et de fichiers delta vers un autre conteneur dans le groupe de fichiers à mémoire optimisée.

À partir de SQL Server 2025 (17.x), vous pouvez supprimer le dernier conteneur restant et supprimer le groupe de fichiers à mémoire optimisée. Pour plus d’informations, consultez le conteneur à mémoire optimisée et la suppression du groupe de fichiers.

Configuration d'un groupe de fichiers mémoire optimisé

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.

Dans un scénario comportant plusieurs conteneurs et plusieurs disques, les fichiers de données et les fichiers delta sont répartis entre les conteneurs selon un mécanisme de tourniquet. Le premier fichier de données est alloué depuis le premier conteneur, le fichier delta depuis le conteneur suivant, et ainsi de suite. 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. 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. Pour obtenir un flux d’E/S équilibré pendant la récupération, envisagez de placer les paires de fichiers de données et de fichiers delta sur les mêmes disques/périphériques de stockage.

Lors de la configuration du stockage, vous devez fournir un espace libre correspondant à quatre fois la taille des tables mémoire optimisées durables. Vérifiez également que votre sous-système d’E/S prend en charge les IOPS nécessaires pour votre charge de travail. 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. Vous pouvez ajouter une capacité de stockage et des IOPS en ajoutant un ou plusieurs conteneurs au groupe de fichiers mémoire optimisé.

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.
Dans ce cas, ne tentez pas de mettre la base de données OFFLINE puis ONLINE, sous peine de la laisser dans l’état RECOVERY_PENDING.

Voir aussi

Création et gestion du stockage des objets à mémoire optimisée
Groupes de fichiers et fichiers de base de données
ALTER DATABASE Options de fichier et de groupe de fichiers (Transact-SQL)