备份压缩 (SQL Server)

本主题讨论备份压缩的基础知识,包括压缩备份时的性能权衡。

SQL Server 2008 Enterprise 中引入了备份压缩。从 SQL Server 2008 R2 开始,SQL Server 2008 R2 Standard 和所有更高版本都支持备份压缩。SQL Server 2008 的每个版本和更高版本都可以还原已压缩的备份。

限制

压缩的备份具有以下限制条件:

  • 压缩的备份和未压缩的备份不能共存于一个介质集中。

  • 早期版本的 SQL Server 无法读取压缩的备份。

  • NTbackup 无法共享包含压缩的 SQL Server 备份的磁带。

压缩备份的性能影响

因为相同数据的压缩的备份比未压缩备份小,所以压缩备份所需的设备 I/O 通常较少,因此通常可大大提高备份速度。

默认情况下,压缩会显著增加 CPU 的使用,并且压缩进程所消耗的额外 CPU 可能会对并发操作产生不利影响。因此,您可能需要在会话中创建低优先级的压缩备份,其 CPU 使用率受资源调控器限制。有关详细信息,请参阅如何使用资源调控器限制备份压缩的 CPU 使用量 (Transact-SQL)

若要很好地了解备份 I/O 的性能表现,可以通过评估以下类型的性能计数器来分别考察进入设备或来自设备的备份 I/O:

有关 Windows 计数器的信息,请参阅 Windows 帮助。有关如何使用 SQL Server 计数器的信息,请参阅使用 SQL Server 对象

配置

安装时,默认情况下关闭了备份压缩。备份压缩的默认行为是由备份压缩默认选项服务器级配置选项定义的。您可以在创建单个备份或计划一系列例行备份时覆盖服务器级默认设置。

更改服务器级默认设置

覆盖备份压缩默认设置

您可以更改单个备份、备份作业或日志传送配置的备份压缩行为。

压缩率

若要计算备份的压缩率,请使用 backupset 历史记录表的 backup_size 列和 compressed_backup_size 列中有关此备份的值,如下所示:

backup_size:compressed_backup_size

例如,3:1 的压缩率表明您可以节省大约 66% 的磁盘空间。若要查询这些列,可以使用以下 Transact-SQL 语句:

SELECT backup_size/compressed_backup_size FROM msdb..backupset;

压缩备份的压缩率取决于所压缩的数据。有多种因素会影响所获得的压缩率。主要因素包括:

  • 数据类型。

    字符数据的压缩率要高于其他类型的数据。

  • 页面上各行间数据的一致性。

    通常,如果某页包含多个行,而其中的某个字段包含相同的值,则该值可获得较大的压缩。相反,对于包含随机数据或者每页只有一个很大的行的数据库,压缩备份的大小几乎与未压缩的备份相同。

  • 数据是否加密。

    与同样的未加密数据相比,加密数据的压缩程度要小很多。如果使用透明数据加密来加密整个数据库,则压缩备份不会将数据库大小减小很多,甚至根本不会减小。

  • 数据库是否压缩。

    如果压缩数据库,则压缩备份不会将大小减小很多,甚至根本不会减小。