Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:SQL Server
Per creare tabelle ottimizzate per la memoria, è necessario creare prima un filegroup ottimizzato per la memoria. Nel filegroup ottimizzato per la memoria è presente uno o più contenitori. Ogni contenitore può contenere file di dati, file delta oppure entrambi.
Anche se le righe di dati delle tabelle SCHEMA_ONLY non sono persistenti e i metadati per le tabelle ottimizzate per la memoria e le stored procedure compilate a livello nativo vengono archiviati nei cataloghi tradizionali, il motore OLTP in memoria richiede comunque un filegroup ottimizzato per la memoria per le tabelle ottimizzate per la memoria SCHEMA_ONLY per fornire un'esperienza uniforme per i database con tabelle ottimizzate per la memoria.
Il filegroup ottimizzato per la memoria è basato sul filegroup filestream, con le differenze seguenti:
È possibile creare un solo filegroup ottimizzato per la memoria per database. È necessario contrassegnare in modo esplicito il filegroup come contenente memory_optimized_data. È possibile creare il filegroup durante la creazione del database o è possibile aggiungerlo successivamente:
ALTER DATABASE imoltp ADD FILEGROUP imoltp_mod CONTAINS MEMORY_OPTIMIZED_DATAÈ necessario aggiungere uno o più contenitori al filegroup
MEMORY_OPTIMIZED_DATA. Ad esempio:ALTER DATABASE imoltp ADD FILE (name='imoltp_mod1', filename='c:\data\imoltp_mod1') TO FILEGROUP imoltp_modNon è necessario abilitare il filestream (Abilitare e configurare FILESTREAM) per creare un filegroup ottimizzato per la memoria. La mappatura a FILESTREAM viene eseguita dal motore In-Memory OLTP.
È possibile aggiungere nuovi contenitori a un filegroup ottimizzato per la memoria. Potrebbe essere necessario un nuovo contenitore per espandere lo spazio di archiviazione necessario per la tabella durevole ottimizzata per la memoria e anche per distribuire le operazioni di I/O tra più contenitori.
Il movimento dei dati con un filegroup ottimizzato per la memoria è ottimizzato in una configurazione di un gruppo di disponibilità Always On. A differenza dei file FILESTREAM che vengono inviati alle repliche secondarie, i file di checkpoint (sia di dati che delta) all’interno del filegroup ottimizzato per la memoria non vengono inviati alle repliche secondarie. I file di dati e differenziali vengono costruiti utilizzando il log delle transazioni sulla replica secondaria.
Nota
In SQL Server 2022 (16.x) e versioni precedenti, dopo aver usato un filegroup ottimizzato per la memoria, è possibile rimuoverlo solo eliminando il database. Non è possibile eliminare un contenitore non vuoto o eliminare l'ultimo contenitore rimanente anche se è vuoto. Non puoi neanche spostare le coppie di file di dati e file delta in un altro contenitore nel filegroup ottimizzato per la memoria.
A partire da SQL Server 2025 (17.x), è possibile rimuovere l'ultimo contenitore rimanente e rimuovere il filegroup ottimizzato per la memoria. Per altre informazioni, vedere Rimozione di filegroup e contenitori ottimizzati per la memoria.
Configurazione di un filegroup con ottimizzazione per la memoria
Creare più contenitori nel filegroup ottimizzato per la memoria e distribuirli in unità differenti per ottenere più larghezza di banda per trasmettere i dati in memoria.
In uno scenario con più contenitori e più unità, i file di dati e i file differenziali vengono allocati tra i contenitori in modalità round-robin. Il primo file di dati viene allocato dal primo contenitore e il file differenziale viene allocato dal contenitore successivo e questo modello di allocazione si ripete. Questo schema di allocazione distribuisce uniformemente i file di dati e i file delta tra i contenitori se si ha un numero dispari di unità, ognuna associata a un contenitore. Tuttavia, se si dispone di un numero pari di unità, ognuna mappata a un contenitore, può verificarsi uno squilibrio di archiviazione, con i file di dati mappati alle unità dispari e i file delta mappati alle unità pari. Per ottenere un flusso di I/O bilanciato durante il ripristino, valutare di collocare coppie di file di dati e file delta sugli stessi dischi/storage.
Nel configurare l'archiviazione, è necessario fornire uno spazio libero su disco quattro volte superiore alla dimensione delle tabelle ottimizzate per la memoria durevoli. Assicurarsi inoltre che il sottosistema di I/O supporti gli IOPS richiesti per il carico di lavoro. Se le coppie di file di dati e delta vengono scritte a un determinato valore di IOPS, è necessario un valore di IOPS triplo per tenere conto delle operazioni di scrittura e merge. È possibile aggiungere capacità di archiviazione e IOPS aggiungendo uno o più contenitori al filegroup ottimizzato per la memoria.
Attenzione
Se per il filegroup con ottimizzazione per la memoria è impostato un valore MAXSIZE e i file del checkpoint superano le dimensioni massime del contenitore, il database verrà contrassegnato come sospetto.
In questo caso, non provare a impostare il database come OFFLINE o ONLINE, perché il database rimarrebbe nello stato RECOVERY_PENDING.
Vedi anche
Creazione e gestione dell'archiviazione per gli oggetti con ottimizzazione per la memoria
File di database e filegroup
ALTER DATABASE Opzioni dei file e dei filegroup (Transact-SQL)