Filegroup con ottimizzazione per la memoriaThe Memory Optimized Filegroup

Per creare tabelle con ottimizzazione per la memoria, è necessario creare prima un filegroup con ottimizzazione per la memoria.To create memory-optimized tables, you must first create a memory-optimized filegroup. Nel filegroup con ottimizzazione per la memoria è presente uno o più contenitori.The memory-optimized filegroup holds one or more containers. Ogni contenitore include file di dati o file differenziali o entrambi.Each container contains data files or delta files or both.

Anche se le righe di dati delle tabelle SCHEMA_ONLY non sono persistenti e i metadati per le tabelle con ottimizzazione per la memoria e le stored procedure compilate a livello nativo vengono archiviati nei cataloghi tradizionali, il motore OLTP in memoriaIn-Memory OLTP richiede comunque un filegroup con ottimizzazione per la memoria per le tabelle con ottimizzazione per la memoria SCHEMA_ONLY per fornire un'esperienza uniforme per i database con tabelle con ottimizzazione per la 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 in 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.

Il filegroup con ottimizzazione per la memoria è basato sul filegroup filestream, con le differenze seguenti:The memory-optimized filegroup is based on filestream filegroup, with the following differences:

  • È possibile creare un solo filegroup con ottimizzazione per la memoria per database.You can only create one memory-optimized filegroup per database. È necessario contrassegnare in modo esplicito il filegroup come contenente memory_optimized_data.You need to explicitly mark the filegroup as containing memory_optimized_data. È possibile creare il filegroup durante la creazione del database o è possibile aggiungerlo successivamente: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  
    
  • È necessario aggiungere uno o più contenitori al filegroup MEMORY_OPTIMIZED_DATA.You need to add one or more containers to the MEMORY_OPTIMIZED_DATA filegroup. Esempio:For example:

    ALTER DATABASE imoltp ADD FILE (name='imoltp_mod1', filename='c:\data\imoltp_mod1') TO FILEGROUP imoltp_mod  
    
  • Non è necessario abilitare il filestream (Abilitare e configurare FILESTREAM) per creare un filegroup con ottimizzazione per la memoria.You do not need to enable filestream (Enable and Configure FILESTREAM) to create a memory-optimized filegroup. Il mapping al filestream viene eseguito dal motore OLTP in memoriaIn-Memory OLTP .The mapping to filestream is done by the OLTP in memoriaIn-Memory OLTP engine.

  • È possibile aggiungere nuovi contenitori a un filegroup con ottimizzazione per la memoria.You can add new containers to a memory-optimized filegroup. Potrebbe essere necessario un nuovo contenitore per espandere l'archiviazione necessaria per la tabella con ottimizzazione per la memoria durevole nonché per distribuire i dati IO tra più contenitori.You may need a new container to expand the storage needed for durable memory-optimized table and also to distribute IO across multiple containers.

  • Lo spostamento di dati a un filegroup con ottimizzazione per la memoria è ottimizzato in una configurazione del gruppo di disponibilità AlwaysOn.Data movement with a memory-optimized filegroup is optimized in an Always On Availability Group configuration. Diversamente dai file filestream inviati alle repliche secondarie, i file del checkpoint (dati e differenziali) nel filegroup con ottimizzazione per la memoria non vengono inviati alle repliche secondarie.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. I file di dati e differenziali vengono costruiti utilizzando il log delle transazioni sulla replica secondaria.The data and delta files are constructed using the transaction log on the secondary replica.

    Di seguito sono riportate le limitazioni del filegroup con ottimizzazione per la memoria.The following limitations of memory-optimized filegroup,

  • Dopo aver creato un filegroup con ottimizzazione per la memoria è possibile rimuoverlo solo eliminando il database.Once you create a memory-optimized filegroup, you can only remove it by dropping the database. In un ambiente di produzione, è improbabile che si renda necessario rimuovere il filegroup con ottimizzazione per la memoria.In a production environment, it is unlikely that you will need to remove the memory-optimized filegroup.

  • Non è possibile eliminare un contenitore non vuoto o spostare le coppie di file di dati e differenziali in un altro contenitore del filegroup con ottimizzazione per la memoria.You cannot drop a non-empty container or move data and delta file pairs to another container in the memory-optimized filegroup.

  • Non è possibile specificare MAXSIZE per il contenitore.You cannot specify MAXSIZE for the container.

Configurazione di un filegroup con ottimizzazione per la memoriaConfiguring a Memory-Optimized Filegroup

È consigliabile creare più contenitori nel filegroup con ottimizzazione per la memoria e distribuirli in unità differenti per ottenere più larghezza di banda per trasmettere i dati in memoria.You should 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.

Nel configurare l'archiviazione, è necessario fornire uno spazio libero su disco quattro volte superiore alla dimensione delle tabelle con ottimizzazione per la memoria durevoli.When configuring storage, you must provide free disk space that is four times the size of durable memory-optimized tables. È inoltre necessario assicurarsi che il sottosistema IO supporti le operazioni di IOPS necessarie per il carico di lavoro.You must also ensure that your IO subsystem supports the required IOPS for your workload. Se le coppie di file di dati e differenziali vengono popolati in un'operazione di IOPS specifica, tale IOPS è necessaria 3 volte per le operazioni di merge e archiviazione.If data and delta file pairs are populated at a given IOPS, you need 3 times that IOPS to account for storing and merge operations. È possibile aggiungere capacità di archiviazione e IOPS aggiungendo uno o più contenitori al filegroup con ottimizzazione per la memoria.You can add storage capacity and IOPS by adding one or more containers to the memory-optimized filegroup.

Vedere ancheSee Also

Creazione e gestione dell'archiviazione per gli oggetti con ottimizzazione per la memoriaCreating and Managing Storage for Memory-Optimized Objects