如果首先将数据库设置为只读,SQL 备份是否会运行得更快?

如果首先将数据库设置为只读,SQL 备份是否会运行得更快?

我必须对所有数据库进行连续备份(所有 .BAK 文件的数据总计为 3.25 GB)。

如果我配置脚本在备份数据库之前先将数据库设置为只读,速度会更快吗?

我正在使用 RESTORE VERIFYONLY 选项来检查备份的完整性。我还想知道有什么可以加快该过程吗?我发现这比实际备份花费的时间更长!

答案1

将其设置为READ ONLY可能会对您有所帮助,因为您正在从海洋中取出一滴水。

备份考虑活跃交易,在备份期间。
这意味着,是的,当您将数据库放入时,READ ONLY您会减少一点点开销。
从技术上讲,这确实有帮助,但实际上并不值得。

提高备份性能著名领土.
有很多博客文章甚至还有一篇关于如何提高备份性能的 Tech-Net 文章。这些文章都没有提到只读,因为说实话你不会注意到任何差异。

要提高备份性能:

  1. 使用多种媒体或设备
  2. 研究特定备份类型的优化选项。
    完整备份和差异备份的优化与日志备份不同,但与恢复备份的优化也不同。
  3. 提高原始平台的读取性能
  4. 提高目标平台上的写入性能

所以总结一下:
是的,它有帮助,但还不足以被一个理智的人衡量。
有很多方法可以提高备份性能,请尝试研究一下。

答案2

将其设置为只读对您没有帮助。您还会使任何需要写访问权限的应用程序停机。

看看你的瓶颈现在在哪里。大多数情况下,它都是以下两个原因之一。

CPU 是瓶颈:不要压缩您的备份。
磁盘是瓶颈:压缩您的备份。

如果您想深入了解,请在备份运行时运行此 TSQL 脚本:

SELECT command,
            sh.text,
            start_time,
            percent_complete,
            CAST(((DATEDIFF(s,start_time,GetDate()))/3600) as varchar) + ' hour(s), '
                  + CAST((DATEDIFF(s,start_time,GetDate())%3600)/60 as varchar) + 'min, '
                  + CAST((DATEDIFF(s,start_time,GetDate())%60) as varchar) + ' sec' as running_time,
            CAST((estimated_completion_time/3600000) as varchar) + ' hour(s), '
                  + CAST((estimated_completion_time %3600000)/60000 as varchar) + 'min, '
                  + CAST((estimated_completion_time %60000)/1000 as varchar) + ' sec' as est_time_to_go,
            dateadd(second,estimated_completion_time/1000, getdate()) as est_completion_time,
            status, blocking_session_id, wait_type, wait_time, last_wait_type, wait_resource, reads, writes, cpu_time 
FROM sys.dm_exec_requests re
CROSS APPLY sys.dm_exec_sql_text(re.sql_handle) sh
WHERE re.command in ('RESTORE DATABASE', 'BACKUP DATABASE', 'RESTORE LOG', 'BACKUP LOG')

percent_complete在 2014 下不起作用,仍然需要找到解决方案)。

在列中,wait_type您将看到导致备份等待的原因。您可以在此列表。如果它必须等待另一个进程,它将显示在 中blocking_session_id。然后您可以使用 获取有关该进程的更多详细信息sp_who2 xxx

如果您的服务器(磁盘/CPU)可以处理,您可以安排备份并发运行。如果您真的想要性能,请备份到多个文件,跨多个磁盘。

答案3

@BartDeVos 说得对,这取决于你的瓶颈是什么,但他忽略了关键点,那就是如果竞争写锁是你的瓶颈,那么是的,使数据库只读会有所帮助。(如果不是,那么不要担心)。

我的数据库专业知识不涉及 Microsoft 产品,因此我无法评论您使用的特定引擎,并且数据库引擎和备份系统之间的实现细节存在相当大的差异。

编辑。阅读评论。如果使用的备份系统是其他受访者假设的备份系统,那么备份速度不会受到影响,我猜 OP 对.bak文件的引用倾向于支持这一点。

相关内容