我们收到了关于查询运行缓慢或一大早超时的报告,而我认为唯一可能影响此运行的工作是我们的数据库备份工作。
数据库本身大约 300GB,备份作业从凌晨 4:30 开始,直到早上 7:00 之后才完成。我们备份作业的当前语法是:
BACKUP DATABASE [DatabaseName]
TO DISK = N'E:\Database Backups\DatabaseName.Bak'
WITH INIT, NOUNLOAD, NAME = N'DatabaseName.Bak',
NOSKIP, STATS = 10, NOFORMAT
E:\
是服务器上的一个分区,它同时保存数据库和数据库备份。
还应该注意,这是一个虚拟服务器,而不是专用的独立服务器。在我们切换到虚拟服务器后,我们开始收到有关备份过程中速度变慢的投诉,所以我认为这可能是相关的。
有没有办法运行这个备份作业,所以它在运行时不会影响查询性能?
我们正在使用 SQL Server 2005
STATS
选项?您确定需要其他选项 (NOUNLOAD
,NOSKIP
,NOFORMAT
) 吗?我没有对整个选项矩阵进行任何广泛的性能测试,但是恕我直言,您应该只使用您知道自己需要的选项。执行零碎恢复
示例:仅部分文件组的分段还原(简单恢复模型)
这是一个常见问题,有多种解决方案,实际上取决于您的环境。让我们来看看它们:
1- 即时备份压缩
2008 年 R1 Backup Compression 在 Enterprise 中可用,在 2008R2 中在 Standard 中可用。这是巨大的。它将为您节省大量时间。如果你能升级就去吧。如果不能,请查看RedGate 的 HyperBak实用程序或Quest LiteSpeed。两者都有免费试用。
2-完整和差异备份
我继承了一个 2TB 的产品数据库,导致我工作的一家 24/7 主要互联网公司出现很多超时。我们启用了完整备份和差异备份,这为我们节省了大量时间。我会在周日上午 12:00 活动较少的时候进行完整备份,并在一周内进行差异分析。这节省了很多空间。Diff 的工作与事务日志不同,因为它们处理更改了哪些数据库页面。备份任何更改的页面。因此,您进行完全还原,然后进行差异还原以添加修改后的页面。
3-你的瓶颈是什么?
瓶颈分析对诊断很重要。您是否备份到与数据文件相同的磁盘阵列?您的数据文件是否被挂钩?备份期间数据磁盘的 DISK SEC/READ 和 DISK SEC/WRITE 是多少?我修改了备份以创建 4 个文件。每个文件都有自己的线程编写器,并且在我们的 SAN 中效果很好。测试一下,我只创建了 4 个备份文件就缩短了 45 分钟。只需确保上面列出的磁盘指标较低。获取基线。
4-复制到不同的服务器并备份
这个有点高级。您必须确保您的复制数据库是最新的,并且您需要对此进行适当的监控。如果是这样,您可以只备份复制的数据库。
您可以使用以下参数:
块尺寸 - 选择尺寸512、1024、2048、4096、8192、16384、32768、65536。(以 KB 为单位)
BUFFERCOUNT - 指定用于备份操作的 I/O 缓冲区的总数。您可以指定任何正整数;但是,由于 Sqlservr.exe 进程中的虚拟地址空间不足,大量缓冲区可能会导致“内存不足”错误。- 来自 MSDN
MAXTRNASFERSIZE - 从 65536 字节 (64 KB) 到 4194304 字节 (4 MB)
试试看。它解决了大型数据库时超时过期的问题。