Backup di un database con tabelle con ottimizzazione per la memoriaBacking Up a Database with Memory-Optimized Tables

QUESTO ARGOMENTO SI APPLICA A:sìSQL Server (a partire dalla versione 2016)noDatabase SQL di AzurenoAzure SQL Data WarehousenoParallel Data WarehouseTHIS TOPIC APPLIES TO: yesSQL Server (starting with 2016)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Il backup delle tabelle con ottimizzazione per la memoria viene eseguito durante i normali backup di database.Memory-optimized tables are backed up as part of regular database backups. Per le tabelle basate su disco, il CHECKSUM di coppie di file di dati e file differenziali viene convalidato durante il backup del database per rilevare eventuali danneggiamenti di archiviazione.As for disk-based tables, the CHECKSUM of data and delta file pairs is validated as part of the database backup to detect storage corruption.

Nota

L'operazione di backup non riesce se viene rilevato un errore di CHECKSUM in uno o più file in un filegroup con ottimizzazione per la memoria.During a backup, if you detect a CHECKSUM error in one or more files in a memory-optimized filegroup, the backup operation fails. In tal caso, è necessario ripristinare il database dall'ultima copia di backup valida nota.In that situation, you must restore your database from the last known good backup.

Se non è disponibile un backup, è possibile esportare i dati dalle tabelle con ottimizzazione per la memoria e dalle tabelle basate su disco e ricaricarli dopo aver eliminato e ricreato il database.If you don’t have a backup, you can export the data from memory-optimized tables and disk-based tables and reload after you drop and recreate the database.

Un backup completo di un database con una o più tabelle con ottimizzazione per la memoria è costituito dall'archiviazione allocata per le tabelle basate su disco (se presente), dal log delle transazioni attivo e dalle coppie di file di dati e file differenziali (anche note come coppie di file di checkpoint) per le tabelle con ottimizzazione per la memoria.A full backup of a database with one or more memory-optimized tables consists of the allocated storage for disk-based tables (if any), the active transaction log, and the data and delta file pairs (also known as checkpoint file pairs) for memory-optimized tables. Tuttavia, come illustrato in Durabilità per tabelle con ottimizzazione per la memoria, le dimensioni di archiviazione usate per le tabelle con ottimizzazione per la memoria possono essere di gran lunga superiori rispetto alle relative dimensioni in memoria e influiscono sulle dimensioni del backup del database.However, as described in Durability for Memory-Optimized Tables, the storage used by memory-optimized tables can be much larger than its size in memory, and it affects the size of the database backup.

Backup completo del databaseFull Database Backup

Questa discussione verterà sui backup dei database che contengono solo tabelle con ottimizzazione per la memoria durevoli, dal momento che il backup per le tabelle basate su disco è lo stesso.This discussion focuses on database backups for databases with only durable memory-optimized tables, because the backup for disk-based tables is the same. Le coppie di file di checkpoint nel filegroup con ottimizzazione per la memoria possono trovarsi in vari stati.The checkpoint file pairs in the memory-optimized filegroup could be in various states. La tabella seguente descrive le parti dei file di cui viene eseguito il backup.The table below describes what part of the files is backed up.

Stato della coppia di file di checkpointCheckpoint File Pair State BackupBackup
PRECREATEDPRECREATED Solo metadati del fileFile metadata only
UNDER CONSTRUCTIONUNDER CONSTRUCTION Solo metadati del fileFile metadata only
ACTIVEACTIVE Metadati del file più i byte utilizzatiFile metadata plus used bytes
MERGE TARGETMERGE TARGET Solo metadati del fileFile metadata only
WAITING FOR LOG TRUNCATIONWAITING FOR LOG TRUNCATION Metadati del file più i byte utilizzatiFile metadata plus used bytes

Per le descrizione degli stati delle coppie di file di checkpoint, vedere sys.dm_db_xtp_checkpoint_files (Transact-SQL) e la relativa colonna state_desc.For descriptions of the states for checkpoint file pairs, see sys.dm_db_xtp_checkpoint_files (Transact-SQL), and its column state_desc.

Le dimensioni dei backup del database con una o più tabelle con ottimizzazione per la memoria sono in genere maggiori delle relative dimensioni in memoria ma inferiori all'archiviazione su disco.The size of database backups with one or more memory-optimized tables is typically larger than its size in memory, but smaller than its on-disk storage. Le maggiori dimensioni dipendono, tra gli altri fattori, anche dal numero di righe eliminate.The extra size depends on the number of deleted rows, among other factors.

Stima delle dimensioni di un backup completo del databaseEstimating Size of Full Database Backup

Importante

Si consiglia di non usare il valore BackupSizeInBytes per stimare la dimensione del backup per OLTP in memoria.It’s recommended that you not use the BackupSizeInBytes value to estimate the backup size for In-Memory OLTP.

Il primo scenario di carico di lavoro è relativo (principalmente) all'operazione di inserimento.The first workload scenario is for (mostly) insert. In questo scenario, la maggior parte dei file di dati si trova nello stato Attivo, è completamente caricata e ha pochissime righe eliminate.In this scenario, most data files are in the Active state, fully loaded, and with very few deleted rows. Le dimensioni del backup del database si avvicinano a quelle dei dati in memoria.The size of database backup up is close to the size of data in memory.

Il secondo scenario di carico di lavoro è per le operazioni di inserimento, eliminazione e aggiornamento frequenti.The second workload scenario is for frequent insert, delete, and update operations. Nel peggiore dei casi, tutte le coppie di file del checkpoint sono caricate al 50% dopo aver tenuto conto delle righe eliminate.In the worst case, each of the checkpoint file pairs are 50% loaded, after accounting for the deleted rows. Le dimensioni del backup del database saranno almeno doppie rispetto a quelle dei dati in memoria.The size of the database backup will at least be 2 times the size of data in memory.

Backup differenziali di database con tabelle con ottimizzazione per la memoriaDifferential Backups of Databases with Memory-Optimized Tables

Lo spazio di archiviazione per le tabelle con ottimizzazione per la memoria è costituito da file di dati e differenziali come descritto in Durabilità per tabelle con ottimizzazione per la memoria.The storage for memory-optimized tables consists of data and delta files as described in Durability for Memory-Optimized Tables. Il backup differenziale di un database con tabelle con ottimizzazione per la memoria contiene i dati seguenti:The differential backup of a database with memory-optimized tables contains the following data:

  • Il backup differenziale per i filegroup che archiviano le tabelle basate su disco non è interessato dalla presenza di tabelle con ottimizzazione per la memoria.Differential backup for filegroups storing disk-based tables is not affected by the presence of memory-optimized tables.

  • Il log delle transazioni attivo è uguale a quello di un backup completo del database.The active transaction log is the same as in a full database backup.

  • Per un filegroup di dati con ottimizzazione per la memoria, il backup differenziale utilizza lo stesso algoritmo di un backup completo del database per identificare i file di dati e differenziali per il backup, ma filtra quindi il subset di file nel modo seguente:For a memory-optimized data filegroup, the differential backup uses the same algorithm as full database backup to identify the data and delta files for backup but it then filters out the subset of files as follows:

    • Un file di dati contiene le righe appena inserite e, quando è pieno, viene chiuso e contrassegnato in sola lettura.A data file contains newly inserted rows, and when it is full it is closed and marked read-only. Il backup di un file di dati viene eseguito solo il file è stato chiuso dopo l'ultimo backup completo del database.A data file is backed up only if it was closed after the last full database backup. Il backup differenziale esegue solo il backup dei file di dati che contengono le righe inserite dopo l'ultimo backup completo del database.The differential backup only backs up data files containing the rows inserted since the last full database backup. Un'eccezione è rappresentata da uno scenario di aggiornamento ed eliminazione in cui alcune righe inserite potrebbero essere già state contrassegnate o sottoposte a Garbage Collection.An exception is an update and delete scenario where it is possible that some of the inserted rows may have already been either marked for garbage collection or already garbage collected.

    • In un file differenziale sono archiviati i riferimenti alle righe di dati eliminate.A delta file stores references to the deleted data rows. Poiché qualsiasi futura transazione può eliminare una riga, è possibile modificare un file differenziale in qualsiasi momento nell'arco della sua durata, non viene mai chiuso.Since any future transaction can delete a row, a delta file can be modified anytime in its life time, it is never closed. Viene sempre eseguito il backup di un file differenziale.A delta file is always backed up. I file differenziali in genere utilizzano meno del 10% dello spazio di archiviazione, pertanto tali file hanno un impatto minimo sulle dimensioni del backup differenziale.Delta files typically use less than 10% of the storage, so delta files have a minimal impact on the size of differential backup.

    Se le tabelle con ottimizzazione per la memoria costituiscono una parte significativa delle dimensioni del database, il backup differenziale può ridurre notevolmente le dimensioni del backup del database.If memory-optimized tables are a significant portion of your database size, the differential backup can significantly reduce the size of your database backup. Per i carichi di lavoro tipici OLTP, i backup differenziali saranno molto più piccoli dei backup completi del database.For typical OLTP workloads, the differential backups will be considerably smaller than the full database backups.

Vedere ancheSee Also

Eseguire il backup, ripristinare e recuperare tabelle con ottimizzazione per la memoriaBackup, Restore, and Recovery of Memory-Optimized Tables