El grupo de archivos con optimización para memoriaThe Memory Optimized Filegroup

SE APLICA A: síSQL Server noAzure SQL Database noAzure SQL Data Warehouse noAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Para crear tablas optimizadas para memoria, primero debe crear un grupo de archivos optimizados para memoria.To create memory-optimized tables, you must first create a memory-optimized filegroup. El grupo de archivos optimizados para memoria contiene uno o varios contenedores.The memory-optimized filegroup holds one or more containers. Cada contenedor contiene archivos de datos, archivos delta o ambos tipos de archivos.Each container contains data files or delta files or both.

Aunque las filas de datos de las tablas SCHEMA_ONLY no se conservan y los metadatos de las tablas optimizadas para memoria y los procedimientos almacenados compilados de forma nativa se almacenan en los catálogos tradicionales, el motor de OLTP en memoriaIn-Memory OLTP todavía requiere un grupo de archivos optimizados para memoria para que las tablas SCHEMA_ONLY optimizadas para memoria proporcionen una experiencia uniforme para las bases de datos con tablas optimizadas para memoria.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 memoriaIn-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.

El grupo de archivos optimizados para memoria se basa en el grupo de archivos de FILESTREAM, con las diferencias siguientes:The memory-optimized filegroup is based on filestream filegroup, with the following differences:

  • Solo puede crear un grupo de archivos optimizados para memoria por cada base de datos.You can only create one memory-optimized filegroup per database. Debe marcarse explícitamente el grupo de archivos como que contiene memory_optimized_data.You need to explicitly mark the filegroup as containing memory_optimized_data. Puede crear el grupo de archivos al crear la base de datos o puede agregarlo posteriormente: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  
    
  • Debe agregar uno o varios contenedores al grupo de archivos MEMORY_OPTIMIZED_DATA.You need to add one or more containers to the MEMORY_OPTIMIZED_DATA filegroup. Por ejemplo:For example:

    ALTER DATABASE imoltp ADD FILE (name='imoltp_mod1', filename='c:\data\imoltp_mod1') TO FILEGROUP imoltp_mod  
    
  • No es necesario habilitar la secuencia de archivos (Habilitar y configurar FILESTREAM) para crear un grupo de archivos optimizados para memoria.You do not need to enable filestream (Enable and Configure FILESTREAM) to create a memory-optimized filegroup. La asignación a la secuencia de archivos la realiza el motor de OLTP en memoriaIn-Memory OLTP .The mapping to filestream is done by the OLTP en memoriaIn-Memory OLTP engine.

  • Puede agregar nuevos contenedores a un grupo de archivos optimizados para memoria.You can add new containers to a memory-optimized filegroup. Quizás necesite un nuevo contenedor para expandir el almacenamiento necesario para la tabla optimizada para memoria durable y también para distribuir la E/S entre varios contenedores.You may need a new container to expand the storage needed for durable memory-optimized table and also to distribute IO across multiple containers.

  • El movimiento de datos con un grupo de archivos optimizados para memoria se optimiza en una configuración de grupo de disponibilidad AlwaysOn.Data movement with a memory-optimized filegroup is optimized in an Always On Availability Group configuration. A diferencia de los archivos de FILESTREAM que se envían a las réplicas secundarias, los archivos de punto de comprobación (de datos y delta) del grupo de archivos optimizados para memoria no se envían a las réplicas secundarias.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. Los archivos de datos y delta se crean mediante el registro de transacciones la réplica secundaria.The data and delta files are constructed using the transaction log on the secondary replica.

Las limitaciones siguientes se aplican al grupo de archivos optimizados para memoria:The following limitations apply to a memory-optimized filegroup:

  • Una vez que use un grupo de archivos optimizados para memoria, solo puede quitarlo si quita la base de datos.Once you use a memory-optimized filegroup, you can only remove it by dropping the database. En un entorno de producción, no es probable que necesite quitar el grupo de archivos optimizados para memoria.In a production environment, it is unlikely that you will need to remove the memory-optimized filegroup.

  • No puede quitar un contenedor que no esté vacío ni mover pares de archivos de datos y delta a otro contenedor en el grupo de archivos optimizados para memoria.You cannot drop a non-empty container or move data and delta file pairs to another container in the memory-optimized filegroup.

Configurar un grupo de archivos con optimización para memoriaConfiguring a Memory-Optimized Filegroup

Considere la posibilidad de crear varios contenedores en el mismo grupo de archivos optimizados para memoria y distribuirlos en otras unidades para lograr más ancho de banda para transmitir los datos en memoria.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.

En un escenario de varios contenedores y varias unidades, los archivos de datos y delta se asignan por turnos (round robin) en los contenedores.In a multiple container, multiple drive scenario, data and delta files are allocated in a round-robin fashion into containers. El primer archivo de datos se asigna al primer contenedor y el archivo delta se asigna desde el siguiente contenedor, y este modelo de asignación se repite.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. Este esquema de asignación distribuye uniformemente los archivos de datos y delta entre los contenedores si tiene un número impar de unidades, cada una de ellas asignada a un contenedor.This allocation scheme distributes data and delta files evenly across containers if you have an odd number of drives, each mapped to one container. Sin embargo, si tiene un número par de unidades, cada una de ellas asignada a un contenedor, puede provocar un almacenamiento desequilibrado donde los archivos de datos se asignan a las unidades impares y los archivos delta se asignan a las unidades pares.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. Para obtener un flujo equilibrado de E/S en la recuperación, considere la posibilidad de colocar los pares de archivos de datos y delta en los mismos ejes o almacenamiento.To obtain a balanced stream of I/O on recovery, consider placing pairs of data and delta files on the same spindles/storage.

Al configurar el almacenamiento, debe proporcionar una cantidad de espacio en disco disponible que sea cuatro veces el tamaño de tablas durables optimizadas para memoria.When configuring storage, you must provide free disk space that is four times the size of durable memory-optimized tables. También debe asegurarse de que el subsistema de E/S admita los IOPS necesarios para la carga de trabajo.Also ensure that your I/O subsystem supports the required IOPS for your workload. Si los pares de archivos de datos y delta se rellenan en las IOPS especificadas, necesita el triple de esas IOPS para dar cabida a las operaciones de almacenamiento y combinación.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. Puede agregar capacidad de almacenamiento e IOPS si agrega uno o varios contenedores al grupo de archivos optimizados para memoria.You can add storage capacity and IOPS by adding one or more containers to the memory-optimized filegroup.

Precaución

Si se establece un valor MAXSIZE para el grupo de archivos optimizados para memoria y los archivos de punto de control superan el tamaño máximo del contenedor, la base de datos se convertirá en 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.
En este caso no intente establecer la base de datos OFFLINE y ONLINE, lo que haría que permaneciera en un estado RECOVERY_PENDING.In this case do not attempt to set the database OFFLINE and ONLINE, causing the database to stay in RECOVERY_PENDING state.

Ver tambiénSee Also

Crear y administrar el almacenamiento de objetos con optimización para memoriaCreating and Managing Storage for Memory-Optimized Objects
Database Files and Filegroups Database Files and Filegroups
Opciones File y Filegroup de ALTER DATABASE (Transact-SQL)ALTER DATABASE File and Filegroup Options (Transact-SQL)