原文链接: http://www.simple-talk.com/sql/backup-and-recovery/faster-restores-best-practices-to-increase-speed/
以下是基于原文的翻译及精简后的内容.
如何提高SQL Server数据库的还原速度
- 经常练习还原数据所使用的命令.
每隔一段时间(最少一个月)演练一两遍还原数据库的操作. 如果真的碰到需要还原数据库的操作, 就可以直接写需要的语句, 减少查找联机丛书的时间, 避免语句中的语法错误. 这样可以节省至少一刻钟的时间.
- 启用文件快速初始化.
还原数据库的时候, 如果使用with move参数, 操作系统会在新的路径下创建数据库所需要的文件. 从SQL Server 2005开始, SQL Server可以使用windows的文件快速初始化功能来初始化还原数据库所生成的文件. 要启用这个功能,需要将SQL Server database engine 的启动账户添加到'执行卷维护任务'(Perform Volume Maintenance Tasks)的组策略中. 启用这个功能可以快速提高初始化数据文件的速度, 节省大量的时间.(有两点需要注意一下, 一个是文件快速初始化只能应用于数据文件, 对日志文件不适用; 二是文件快速初始化有安全上的隐患, 因为通过快速初始化创建的文件中含有磁盘中原有的数据, 而没有用0覆写.)
- 服务器硬件
存储的读写速度如何, 对数据库的恢复速度影响也比较大. 更多的磁盘或者使用SSD会加快还原的速度, 另外更大的内存和更快更多的CPU也是一样.
- 备份压缩
从SQL Server 2008开始, 支持对数据库进行压缩备份. 磁盘是系统中最慢的部分, 而压缩后的数据库备份数据量更小, 这样节省了生成备份时,往磁盘上写数据的时间, 同样也节省了还原时,从磁盘上读备份的时间. 当然压缩或者解压是需要额外的CPU资源, 这点需要注意.
- 多文件
在备份数据库时,备份到多个文件,这样并行处理可以提高备份的速度; 如果这些备份文件又是分散在不同的物理磁盘上, 那么会节省更多的备份时间. 还原时也是一样.
- 就地还原
在还原已有数据库的备份时, 不使用with move的选项, 直接覆盖已有文件, 可以节省文件初始化所需要的时间.
- 恢复
数据库备份的还原过程中, 先是做restore, 然后是recover, 恢复的操作就是回滚或者前滚事务, 以保持数据库的一致性. SQL Server 有一个(Recovery Interval) 的选项,控制checkpoint发生的频率. 这个选项的默认值是0, 也就是由SQL Server自动调整checkpoint发生的频率. 除非由SQL Server自动控制的checkpoint发生频率严重影响了系统性能, 否则建议不修改这个选项.(曾经在生产环境中碰到过这样的问题, 由于把recovery interval改到24小时, 导致数据库意外重启后, 恢复了20个小时以上, 不得已用备份库当做生产库用, 后来花了很长时间去补数据.)