以下是基于原文的翻译及精简后的内容.

如何提高SQL Server数据库的还原速度

  1. 经常练习还原数据所使用的命令.
    每隔一段时间(最少一个月)演练一两遍还原数据库的操作. 如果真的碰到需要还原数据库的操作, 就可以直接写需要的语句, 减少查找联机丛书的时间, 避免语句中的语法错误. 这样可以节省至少一刻钟的时间.

  2. 启用文件快速初始化.
    还原数据库的时候, 如果使用with move参数, 操作系统会在新的路径下创建数据库所需要的文件. 从SQL Server 2005开始, SQL Server可以使用windows的文件快速初始化功能来初始化还原数据库所生成的文件. 要启用这个功能,需要将SQL Server database engine 的启动账户添加到'执行卷维护任务'(Perform Volume Maintenance Tasks)的组策略中. 启用这个功能可以快速提高初始化数据文件的速度, 节省大量的时间.(有两点需要注意一下, 一个是文件快速初始化只能应用于数据文件, 对日志文件不适用; 二是文件快速初始化有安全上的隐患, 因为通过快速初始化创建的文件中含有磁盘中原有的数据, 而没有用0覆写.)
  3. 服务器硬件
    存储的读写速度如何, 对数据库的恢复速度影响也比较大. 更多的磁盘或者使用SSD会加快还原的速度, 另外更大的内存和更快更多的CPU也是一样.
  4. 备份压缩
    从SQL Server 2008开始, 支持对数据库进行压缩备份. 磁盘是系统中最慢的部分, 而压缩后的数据库备份数据量更小, 这样节省了生成备份时,往磁盘上写数据的时间, 同样也节省了还原时,从磁盘上读备份的时间. 当然压缩或者解压是需要额外的CPU资源, 这点需要注意.
  5. 多文件
    在备份数据库时,备份到多个文件,这样并行处理可以提高备份的速度; 如果这些备份文件又是分散在不同的物理磁盘上, 那么会节省更多的备份时间. 还原时也是一样.
  6. 就地还原
    在还原已有数据库的备份时, 不使用with move的选项, 直接覆盖已有文件, 可以节省文件初始化所需要的时间.
  7. 恢复
    数据库备份的还原过程中, 先是做restore, 然后是recover, 恢复的操作就是回滚或者前滚事务, 以保持数据库的一致性. SQL Server 有一个(Recovery Interval) 的选项,控制checkpoint发生的频率. 这个选项的默认值是0, 也就是由SQL Server自动调整checkpoint发生的频率. 除非由SQL Server自动控制的checkpoint发生频率严重影响了系统性能, 否则建议不修改这个选项.(曾经在生产环境中碰到过这样的问题, 由于把recovery interval改到24小时, 导致数据库意外重启后, 恢复了20个小时以上, 不得已用备份库当做生产库用, 后来花了很长时间去补数据.)