我可以在服务器中添加什么以使SQL恢复更快?


8

我有一个2.8TB的SQL数据库(主要是数据文件,一些400GB的日志文件),目前大约需要9个小时才能还原。该数据库用于测试目的,必须在每次运行之间从备份中删除和还原该数据库,以确保我们始终从同一点开始。

我的问题是,该服务器当前具有12个核心和92GB的RAM,以及数据库所在的RAID 5磁盘子系统。哪些区域通常会导致SQL还原过程出现瓶颈?是磁盘,内存还是CPU?


3
您要从哪个备份介质还原?顺便说一下,与大多数其他RAID级别相比,RAID 5会产生沉重的写入损失,因此这可能不是性能测试的最佳选择。
克里斯·麦基翁

.bak(拆分成8个)位于要还原到的同一RAID 5阵列上,这确实使我意识到我将来可能会更好地处理该问题。我没有足够大的数组来容纳所有.bak,但我可以将它们拆分为不同的直接连接驱动器。另外,关于RAID 5的一点要点是,我已经知道了,但是我们还没有进行压力测试,因此,如果在实际负载测试期间当前磁盘驱动器出现瓶颈,那就很好了。一旦我们得到更远一点,我们将通过增加SAN,RAID 0或RAID磁盘性能1 + 0
肖恩·朗

2
当然,您也要还原驱动器上的备份会给您带来不适当的痛苦。您当前的RAID5中有多少个磁盘?
Mark Storey-Smith

我假设您正在使用压缩。您还使用其他哪些备份选项?您的数据如何分区?您是否能够跨文件组智能地分发数据(然后可以仅对更改后的数据进行文件组备份和还原)?
swasheck

问题在于测试涉及数据库的很大一部分,因此我们必须在多个文件组之间进行还原(测试会根据工作负载的需求和发展而变化)。因此,我们将不得不不断查看测试组成并还原特定的文件组。虽然这是一种选择,但我不确定它会为我们节省很多时间。
肖恩·朗

Answers:


6

还原的主要瓶颈将是磁盘IO。要解决此问题,您基本上需要更快的磁盘或其他配置。我对RAID或SAN知之甚少,尽管那里没有任何建议。您甚至可以考虑使用SSD。他们快得快。我不想在无法定期重新创建的内容上使用它们(tempdb始终是一个不错的选择),但是由于您经常进行恢复,因此可以。另一方面,如果要进行性能测试,则可能要确保测试服务器与生产服务器尽可能近。

您还可以做其他几件事来帮助自己。如果尚未压缩,请先压缩备份。当然,这假定使用SQL 2008或更高版本。这不仅会减少存储备份的磁盘空间,而且会减少读取备份的IO。这会涉及CPU成本,因此请注意。也不要删除数据库,只需对其进行还原。这样,文件已经就位,创建它们没有任何开销。您可以打开即时文件初始化(这是服务器级别的权限),以大大加快数据文件的文件创建/增长速度,但不适用于日志文件。


好的信息,我没有意识到在现有数据库上进行还原比从备份中删除/还原更好。我们已经在使用压缩,并且我打算验证是否为执行还原的帐户启用了即时文件初始化。我非常感谢您回答的清楚,谢谢!
肖恩·朗

确保也在运行SQL Server的帐户上打开了即时文件初始化。对于小型数据库,可能并不是那么重要,但是对于您正在查看的大小,它可能会产生很大的变化。
肯尼斯·费舍尔

好决定。另外还要感谢您意识到性能测试并不总是意味着压力测试(并且目前,我对我的产品配置的设置方式感到非常局限)。
肖恩·朗

OT:“考虑使用SSD。...我不想在无法定期重新创建的东西上使用它们。” ... 为什么呢?
2013年

我仍然会为他们的失败感到紧张。我读过的所有内容都说过将它们用于tempdb之类的数据库,每次实例启动时都会重新创建它们,而不是将其用于常规用户数据库。尽管我相信随着时间的推移这会改变。
肯尼斯·费舍尔

7

不要做备份和还原;使用SQL Server快照。稀疏文件的大小与快照的文件大小相同,需要大量磁盘空间,但回滚速度要快数百倍。

它们在SQL Server Enterprise和SQL Server Developer版本中可用。


这是一个好主意,如果这是除性能测试服务器之外的任何其他服务器,那么这似乎是一个不错的选择。但是,数据库快照似乎无法使用,因为它将导致源数据库产生额外的开销,而我却没有。完成的测试是性能测试(负载,压力等),因此我们必须避免任何会引起压力的外部因素。

就个人而言,我并没有注意到快照的性能差异,但是我想写时复制确实会有一些开销。不知道你的工作量我无法判断。
马克·亨德森

2
@SeanLong Mark的建议可能是您的方案的最佳选择。我认为您误会了快照的时间和内容。测试服务器上的计划是从实时备份中还原测试数据库,然后对测试数据库进行快照,运行测试周期,然后还原快照,冲洗并重复。您可以定期返回步骤1并还原实时备份以再次进行测试。
Mark Storey-Smith

知道了 我认为维护快照需要来自测试数据库的恒定开销,这会影响我们(非常繁重的写入/读取)负载测试。我不介意我们的工作量是否导致了磁盘驱动器的瓶颈,我只是不希望外部因素(我认为这是数据库快照的原因)引起的。
肖恩·朗
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.