日期:2014-05-17  浏览次数:21487 次

如何找出数据库备份慢的原因
一个数据文件大小10G左右,log文件也是10G左右的数据库,
每周都会有停机维护,维护时会有维护计划对数据库进行一次完整备份。
正常情况下维护计划1分钟就能完成,但偶尔会出现维护计划需要20分钟左右的执行时间
请问下如何能够找出数据库备份慢的原因。

------解决方案--------------------
Profiler?
------解决方案--------------------
另外, 加快备份速度:



backup database 数据库
to disk ='路径.bak'
with BUFFERCOUNT = 30,          --使用30个buffer,每个buffer 是4MB,也就是一共120MB
     MAXTRANSFERSIZE = 4194304  --4MB

------解决方案--------------------
可能原因:
1、磁盘碎片,碎片多,同样的数据分布范围就光,备份是按区来做单位的。可以监控一下,备份过程中备份扫描了多少个区。如果区的差异很大,可能就是碎片问题。
2、10G日志,要看日志的内容有多少,完整备份时,除了数据文件,还会包含可用于恢复的那部分日志,如果“那部分日志”很多,那备份也多。
3、对比一下两次备份的备份文件大小。会不会相差很大。
4、I/O性能是否有降低,不过如果你的时间不是越来越久而是时而高时而低,那这个问题的发生机会应该没那么大。
5、有其他进程(包括windows和sqlserver)在同时运行,备份不仅要考虑IOPS,还要考虑IO带宽。带宽被占了,也一样不会快。
6、看看CPU的使用率是否很高,这个其实和5有点关系,如果有其他操作在做,占用了CPU,也会影响备份,备份除了高IO开销之外CPU开销也很重要。

我觉得你可以用backup语句,看看每次的区数是否合理增长,这个是最重要的
------解决方案--------------------
还可以用这些计数器来监控一下备份相关的值
------解决方案--------------------
系统表msdb.dbo.backupset里有backup_start_date字段(备份开始时间)和backup_finish_date字段(备份结束时间),查看一下是否差20分钟.

select top 1 name,
             database_name,
case when TYPE='D' then 'Database' 
     when TYPE='I' then 'Diff Database' 
     when TYPE='L' then 'Log'
     when TYPE='F' then 'File(Group)' 
     when TYPE='G' then 'Diff File'
     when TYPE='P' then 'Partial'
     when TYPE='Q' then 'Diff Partial' end as BACKUPTYPE,
     backup_size/1024/1024 'BACKUPSIZE(MB)',
     backup_start_date '备份开始时间',
     backup_finish_date '备份结束时间'
from msdb.dbo.backupset
order by backup_set_id desc