数据库压缩备份
大型数据库的数据库备份和维护窗口总是受阻,特别是当我们需要完全数据库备份来初始化一个数据库镜像或事务日志传送会话的时候。当我们浏览 SQL Server 2008的新特性时,我们发现由一个叫做数据库备份压缩的特性,可以用它来显著地降低备份和恢复操作。
数据库压缩是SQL Server 2008的一个新特性,它可以显著地降低备份和恢复操作。默认情况下,备份压缩是在服务器实例级别上关闭的。不像其它提供不同级别压缩的第三方软件,SQL Server 2008只提供了一个级别。
在这篇文章里,我们将看看怎样执行数据库备份压缩和比较一下一个普通数据库备份的备份和恢复时间与压缩数据库备份的备份和恢复时间,以及备份文 件的大小。首先让我们给AdventureWorks数据库创建一个完全备份,这个数据库的大小大约为178.75 MB。我选择使用一个TSQL脚本来进行备份和恢复,所以我可以看到这个过程它花费了多少时间。我是在一个具有2GB RAM的VMWare上运行的,所以可能和运行在物理服务器上不同。
BACKUP DATABASE AdventureWorks TO DISK = ‘C:\SQLData\AdventureWorks_uncompressed.bak‘ WITH INIT, STATS = 10 |
默认情况下,在我例子中未压缩的备份数据过程花费了29.20秒,备份大小为132 MB。
图1
现在,让我们对我们的AdventureWorks数据库执行数据库备份压缩。
BACKUP DATABASE AdventureWorks TO DISK = ‘C:\SQLData\AdventureWorks_compressed.bak‘ WITH COMPRESSION, INIT, STATS = 10 |
注意,在BACKUP DATABASE命令中没有什么新的,除了在WITH条件从句里包含了COMPRESSION关键字。这告诉SQL Server压缩这个数据库备份,因为默认情况下压缩是关闭的。压缩的备份数据库过程花费了大约20.47 seconds,备份大小为35.31 MB——在大小和时间上都有显著的降低。
图3
图4
你可以使用下面的脚本来比较执行一个压缩备份和一个未压缩备份在时间上的不同。
DECLARE @timeDiff DATETIME
SET @timeDiff = GETDATE()
BACKUP DATABASE AdventureWorks
TO DISK = ‘C:\SQLData\AdventureWorks_uncompressed.bak‘
WITH INIT
SELECT DATEDIFF(ms, @timeDiff, GETDATE()) AS uncompressed_time_in_ms
RESTORE DATABASE AdventureWorks_uncompressed
FROM DISK = N‘C:\SQLData\AdventureWork_uncompressed.bak‘
WITH MOVE N‘AdventureWorks_Data‘ TO N‘C:\SQLData\AdventureWorks.mdf‘,
MOVE N‘AdventureWorks_Log‘ TO N‘C:\SQLData\AdventureWorks_1.ldf‘,
RECOVERY,
STATS = 10;
GO
未压缩备份的恢复过程花费的时间大约为39.72秒。
图5
现在我们将恢复压缩数据库备份。注意,它使用的是和我们在未压缩数据库备份中所使用的相同的RESTORE DATABASE命令,因为SQL Server可以从备份媒体元数据了解到它是否是压缩的。
USE master GO RESTORE DATABASE AdventureWorks_compressed FROM DISK = N‘C:\SQLData\AdventureWorks_compressed.bak‘ WITH MOVE N‘AdventureWorks_Data‘ TO N‘C:\SQLData\AdventureWorks_c.mdf‘, MOVE N‘AdventureWorks_Log‘ TO N‘C:\SQLData\AdventureWorks_c.ldf‘, RECOVERY, STATS = 10; GO |
压缩数据库的恢复过程花费的时间大约为22.03秒。即在恢复时间上降低了45%。
图6
激活服务器实例级别的数据库备份压缩
因为数据库备份压缩默认情况下是关闭的,所以你可以选择使用sp_configure系统存储过程来激活服务器实例级别的数据库备份压缩。
USE master
GO
EXEC sp_configure ‘backup compression default‘, ‘1‘
RECONFIGURE WITH OVERRIDE
你还可以通过使用SQL Server管理套件来设置服务器实例属性来激活。在Server Properties 窗口的Database Settings部分,只要点击Compress Backup复选框,这个特性就在服务器实例级别被激活了。
图7
注意: 数据库备份压缩特性只在企业版中有效,而恢复压缩数据库备份在SQL Server 2008的所有版本上都有效。