Compressione backup (SQL Server)Backup Compression (SQL Server)

In questo argomento viene descritta la compressione dei backup di SQL ServerSQL Server , incluse le restrizioni, il compromesso di prestazioni previsto dalla compressione di backup, la configurazione della compressione di backup e il rapporto di compressione.This topic describes the compression of SQL ServerSQL Server backups, including restrictions, performance trade-off of compressing backups, the configuration of backup compression, and the compression ratio. La compressione dei backup è supportata nelle edizioni di SQL Server 2017SQL Server 2017 : Developer, Standard ed Enterprise.Backup compression is supported on SQL Server 2017SQL Server 2017 editions: Enterprise, Standard, and Developer. Ogni edizione di SQL Server 2008SQL Server 2008 e successiva è in grado di ripristinare un backup compresso.Every edition of SQL Server 2008SQL Server 2008 and later can restore a compressed backup.

Vantaggi Benefits

  • Poiché le dimensioni di un backup compresso sono minori di quelle di un backup non compresso degli stessi dati, la compressione di un backup richiede una minore quantità di I/O del dispositivo e pertanto la velocità del backup aumenta in genere in modo significativo.Because a compressed backup is smaller than an uncompressed backup of the same data, compressing a backup typically requires less device I/O and therefore usually increases backup speed significantly.

    Per ulteriori informazioni, vedere Impatto sulle prestazioni della compressione di backup, più avanti in questo argomento.For more information, see Performance Impact of Compressing Backups, later in this topic.

Restrizioni Restrictions

Ai backup compressi vengono applicate le restrizioni seguenti:The following restrictions apply to compressed backups:

  • I backup compressi e non compressi non possono coesistere in un set di supporti.Compressed and uncompressed backups cannot co-exist in a media set.

  • Nelle versioni precedenti di SQL ServerSQL Server non è possibile leggere i backup compressi.Previous versions of SQL ServerSQL Server cannot read compressed backups.

  • NTbackups non può condividere un nastro con backup compressi di SQL ServerSQL Server .NTbackups cannot share a tape with compressed SQL ServerSQL Server backups.

Impatto sulle prestazioni della compressione di backup Performance Impact of Compressing Backups

Per impostazione predefinita, la compressione aumenta significativamente l'utilizzo della CPU, il che può avere un impatto negativo sulle operazioni simultanee.By default, compression significantly increases CPU usage, and the additional CPU consumed by the compression process might adversely impact concurrent operations. Quindi potrebbe essere necessario creare backup compressi con priorità bassa in una sessione in cui l'utilizzo della CPU è limitato daResource Governor.Therefore, you might want to create low-priority compressed backups in a session whose CPU usage is limited byResource Governor. Per ulteriori informazioni, vedere Utilizzo di Resource Governor per limitare l'utilizzo della CPU da parte della compressione dei backup (Transact-SQL).For more information, see Use Resource Governor to Limit CPU Usage by Backup Compression (Transact-SQL).

Per conoscere le prestazioni di I/O del backup, è possibile isolare l'I/O del backup in/da dispositivi valutando i seguenti ordinamenti di contatori delle prestazioni:To obtain a good picture of your backup I/O performance, you can isolate the backup I/O to or from devices by evaluating the following sorts of performance counters:

  • Contatori delle prestazioni di I/O di Windows, ad esempio i contatori del disco fisicoWindows I/O performance counters, such as the physical-disk counters

  • Contatore Byte/sec velocità effettiva dispositivo dell'oggetto SQLServer:Backup DeviceThe Device Throughput Bytes/sec counter of the SQLServer:Backup Device object

  • Contatore Velocità effettiva backup o ripristino/sec dell'oggetto SQLServer:DatabasesThe Backup/Restore Throughput/sec counter of the SQLServer:Databases object

    Per informazioni sui contatori di Windows, vedere la Guida di Windows.For information about Windows counters, see Windows help. Per informazioni su come usare i contatori di SQL Server, vedere Utilizzare oggetti di SQL Server.For information about how to work with SQL Server counters, see Use SQL Server Objects.

Calcolare il rapporto di compressione di un backup compresso Calculate the Compression Ratio of a Compressed Backup

Per calcolare il rapporto di compressione di un backup, usare i valori per il backup nelle colonne backup_size e compressed_backup_size della tabella di cronologia backupset , come segue:To calculate the compression ratio of a backup, use the values for the backup in the backup_size and compressed_backup_size columns of the backupset history table, as follows:

backup_size:compressed_backup_sizebackup_size:compressed_backup_size

Una compressione 3:1, ad esempio, indica un risparmio approssimativo del 66% di spazio su disco.For example, a 3:1 compression ratio indicates that you are saving about 66% on disk space. Per eseguire una query su queste colonne, è possibile utilizzare la seguente istruzione Transact-SQL:To query on these columns, you can use the following Transact-SQL statement:

SELECT backup_size/compressed_backup_size FROM msdb..backupset;  

Il rapporto di compressione di un backup compresso dipende dai dati compressi.The compression ratio of a compressed backup depends on the data that has been compressed. Vari fattori possono avere un impatto sul rapporto di compressione ottenuto.A variety of factors can impact the compression ratio obtained. Di seguito vengono indicati alcuni dei fattori principali:Major factors include:

  • Tipo di dati.The type of data.

    I dati di tipo carattere vengono compressi maggiormente rispetto ad altri tipi di dati.Character data compresses more than other types of data.

  • Coerenza dei dati tra le righe in una pagina.The consistency of the data among rows on a page.

    In genere, se una pagina contiene molte righe in cui un campo contiene lo stesso valore, potrebbe verificarsi una significativa compressione per tale valore.Typically, if a page contains several rows in which a field contains the same value, significant compression might occur for that value. Invece, per un database che contiene dati casuali o che contiene solo una grande riga per pagina, un backup compresso avrebbe pressoché le stesse dimensioni di un backup non compresso.In contrast, for a database that contains random data or that contains only one large row per page, a compressed backup would be almost as large as an uncompressed backup.

  • Crittografia dei dati.Whether the data is encrypted.

    I dati crittografati vengono compressi molto meno rispetto ai dati equivalenti non crittografati.Encrypted data compresses significantly less than equivalent unencrypted data. Se si utilizza Transparent Data Encryption per crittografare un intero database, la compressione dei backup potrebbe non garantire una riduzione significativa, e in alcuni casi neanche minima, delle dimensioni.If transparent data encryption is used to encrypt an entire database, compressing backups might not reduce their size by much, if at all.

  • Compressione del database,Whether the database is compressed.

    Se il database è compresso, la compressione potrebbe ridurre di poco o non ridurre le dimensioni dei backup.If the database is compressed, compressing backups might not reduce their size by much, if at all.

Allocazione di spazio per il file di backup Allocation of Space for the Backup File

Per i backup compressi le dimensioni dei file di backup finale dipende dal livello di compressione dei dati e questo valore non è noto finché l'operazione di backup non viene completata.For compressed backups, the size of the final backup file depends on how compressible the data is, and this is unknown before the backup operation finishes. Per impostazione predefinita, quando si esegue il backup di un database mediante compressione, il motore di database utilizza pertanto un algoritmo di preallocazione per il file di backup.Therefore, by default, when backing up a database using compression, the Database Engine uses a pre-allocation algorithm for the backup file. Tramite questo algoritmo viene preallocata una percentuale predefinita delle dimensioni del database per il file di backup.This algorithm pre-allocates a predefined percentage of the size of the database for the backup file. Se durante un'operazione di backup è necessaria una quantità di spazio maggiore, il motore di database aumenta le dimensioni del file.If more space is needed during the backup operation, the Database Engine grows the file. Se le dimensioni finali sono inferiori allo spazio allocato, al termine dell'operazione di backup il motore di database compatta il file in base alle dimensioni finali effettive del backup.If the final size is less than the allocated space, at the end of the backup operation, the Database Engine shrinks the file to the actual final size of the backup.

Per consentire l'aumento del file di backup solo di quanto necessario per raggiungere le relative dimensioni finali, utilizzare il flag di traccia 3042.To allow the backup file to grow only as needed to reach its final size, use trace flag 3042. Il flag di traccia 3042 fa in modo che durante l'operazione di backup venga ignorato l'algoritmo di preallocazione di compressione di backup predefinito.Trace flag 3042 causes the backup operation to bypass the default backup compression pre-allocation algorithm. Questo flag di traccia è utile se è necessario risparmiare spazio allocando solo le dimensioni effettive necessarie per il backup compresso.This trace flag is useful if you need to save on space by allocating only the actual size required for the compressed backup. L'utilizzo di questo flag di traccia può tuttavia comportare un effetto leggermente negativo sulle prestazioni, vale a dire un possibile aumento della durata dell'operazione di backup.However, using this trace flag might cause a slight performance penalty (a possible increase in the duration of the backup operation).

Vedere ancheSee Also

Panoramica del backup (SQL Server) Backup Overview (SQL Server)
Flag di traccia (Transact-SQL) Trace Flags (Transact-SQL)