sql server 2008中的备份压缩特性
sql server 2005不支持备份压缩。很奇怪怎么不支持呢? sybase在ASE12.x都支持备份压缩了。
自sql server 2008才开始支持备份压缩。虽然只有 SQL Server 2008 Enterprise 及更高版本支持创建压缩的备份,但从 SQL Server 2008 开始,每个版本都可以还原压缩的备份。
限制
压缩的备份具有以下限制条件:
压缩的备份和未压缩的备份不能共存于一个媒体集中。
早期版本的 SQL Server 无法读取压缩的备份。
NTbackup 无法共享包含压缩的 SQL Server 备份的磁带。
压缩备份的性能影响
因为相同数据的压缩的备份比未压缩备份小,所以压缩备份所需的设备 I/O 通常较少,因此通常可大大提高备份速度。
默 认情况下,压缩会显著增加 CPU 的使用,并且压缩进程所消耗的额外 CPU 可能会对并发操作产生不利影响。因此,您可能需要在会话中创建低优先级的压缩备份,其 CPU 使用率受资源调控器限制。有关详细信息,请参阅如何使用资源调控器限制备份压缩的 CPU 使用量 (Transact-SQL)。
若要很好地了解备份 I/O 的性能表现,可以通过评估以下类型的性能计数器来分别考察进入设备或来自设备的备份 I/O:
Windows I/O 性能计数器,例如物理磁盘计数器
SQLServer:Backup Device 对象的 Device Throughput Bytes/sec 计数器
SQLServer:Databases 对象的 Backup/Restore Throughput/sec 计数器
有关 Windows 计数器的信息,请参阅 Windows 帮助。有关如何使用 SQL Server 计数器的信息,请参阅使用 SQL Server 对象。
配置
安装 时,默认情况 下关闭了备份压缩。备份压缩的默认行为是由备份压缩默认选项服务器级配置选项定义的。您可以在创建单个备份或计划一系列例行备份时覆盖服务器级默认设置。
更改服务器级默认设置
Transact-SQL
使用 sp_configure 存储过程设置备份压缩默认设置的值,然后执行 RECONFIGURE 语句。
SQL Server Management Studio
使用“服务器属性”对话框的“数据库 设置”页。有关详细信息,请参阅如何查看或更改备份压缩默认选项 (SQL Server Management Studio)。
--使用TSQL配置数据库备份压缩
USE MASTER
GO
EXEC sp_configure 'backup compression default', '1'
GO
RECONFIGURE WITH OVERRIDE
GO
覆盖备份压缩默认设置
您可以更改单个备份、备份作业或日志传送配置的备份压缩行为。
1.Transact-SQL
对于给定备份,可以在 BACKUP 语句中使用 WITH NO_COMPRESSION 或 WITH COMPRESSION。
对于日志传送配置,可以使用 sp_add_log_shipping_primary_database sp_change_log_shipping_primary_database (Transact-SQL) 控制日志备份的备份压缩行为。
2.SQL Server Management Studio
您可以通过在以下任意对话框中指定“压缩备份”或“不压缩备份”来覆盖服务器备份压缩默认设置:
备份数据库(“选项”页)
备份数据库时,可以控制单个数据库、文件或日志备份的备份压缩。
维护计划向导
通过维护计划向导,您可以控制所计划的每组类型为完全或差异的数据库备份或日志备份的备份压缩。
3.SQL Server 2008 Integration Services (SSIS) 备份数据库任务
您可以在创建用于备份单个数据库或多个数据库的包时控制备份压缩行为。
日志传送事务日志备份设置
您可以控制日志备份的备份压缩行为。
压缩率
若要计算备份的压缩率,请使用 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;
压缩备份的压缩率取决于所压缩的数据。有多种因素会影响所获得的压缩率。
主要因素包括:
1.数据类型。
2.字符数据的压缩率要高于其他类型的数据。
3.页面上各行间数据的一致性。
通常,如果某页包含多个行,而其中的某个字段包含相同的值,则该值可获得较大的压缩。相反,对于包含随机数据或者每页只有一个很大的行的数据库,压缩备份的大小几乎与未压缩的备份相同。
数据是否加密。
与同样的未加密数据相比,加密数据的压缩程度要小很多。如果使用透明数据加密来加密整个数据库,则压缩备份不会将数据库大小减小很多,甚至根本不会减小。
数据库是否压缩。
如果压缩数据库,则压缩备份不会将大小减小很多,甚至根本不会减小。
测试例子:
--下面的TSQL代码可以用来对SampleDB 数据库执行完全的压缩备份。完成这个压缩完全备份所花费的时间是6.910秒。
BACKUP DATABASE SAMPLEDB
TO DISK = N'D:\DatabaseBackups\SampleDB_Compressed.Bak'
WITH INIT, STATS = 20
你可以运行下面的TSQL代码在压缩字段中查找一个值。如果这个值是1,那么这意味着这个数据库备份是压缩了的,如果它是0,那么它意味着这个数据库备份没有被压缩或者它是一个本地备份。
RESTORE HEADERONLY
FROM DISK = N'D:\DatabaseBackups\SampleDB_Compressed.Bak'
注意:数据库备份压缩显著地提高了CPU的使用,并因此在执行数据库备份时它对其它的数据库操作有轻微的影响。你需要仔细地计划数据库备份工作可以执行备份的这个时间。
恢复一个压缩的数据库备份
下面的TSQL代码将从压缩的备份恢复SampleDB数据库,它的完成时间是8.565秒。
RESTORE FILELISTONLY
FROM DISK = N'D:\DatabaseBackups\SampleDB_Compressed.Bak'
GO
RESTORE DATABASE SampleDB
FROM DISK = N'D:\DatabaseBackups\SampleDB_Compressed.Bak'
WITH MOVE N'SampleDB_Data'
TO N'D:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\SampleDB.mdf',
MOVE N'SampleDB_Log'
TO N'D:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\SampleDB_1.ldf',
RECOVERY,
STATS = 20
GO
恢复未压缩的数据库备份
下面的TSQL代码将从未压缩的备份恢复SampleDB 数据库,它的完成时间是15.9891秒。
RESTORE FILELISTONLY
FROM DISK = N'D:\DatabaseBackups\SampleDB_Uncompressed.Bak'
GO
RESTORE DATABASE SampleDB
FROM DISK = N'D:\DatabaseBackups\SampleDB_Uncompressed.Bak'
WITH MOVE N'SampleDB_Data'
TO N'D:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\SampleDB.mdf',
MOVE N'SampleDB_Log'
TO N'D:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\SampleDB_1.ldf',
RECOVERY,
STATS = 20
GO
用来评估数据库备份压缩的性能计算器(Performance Counters)
处理器对象的%处理器时间计算器。
物理磁盘对象的%磁盘时间计算器& Avg 磁盘队列长度。
SQLServer 备份设备对象的设备吞吐量字节/秒计算器。
SQLServer数据库对象的备份/恢复吞吐量/秒计算器。
————————————————————————————————————
——— 本文为andkylee个人原创,请在尊重作者劳动成果的前提下进行转载;
——— 转载务必注明原始出处 : http://www.dbainfo.net
——— 关键字: sqlserver 2008 R2 备份 压缩 backup compression
————————————————————————————————————