了解 SQL Server 的恢复性能

恢复性能主要与崩溃恢复而不是还原备份后的恢复相关。但是,也可能对从备份还原后的恢复进行优化。

恢复时间是由从上一次检查点之后做了多少工作和在数据丢失时所有活动事务做了多少工作共同决定的。SQL Server 使用名为 recovery interval 的配置选项设置 SQL Server 恢复数据库时每个数据库所用的近似最大分钟数。此 recovery interval 设置控制检查点的频率。对于联机事务处理 (OLTP) 系统(使用短事务的系统),recovery interval 是确定恢复时间的主要因素。

安装完成后,SQL Server 将 recovery interval 设置为零。只要 recovery interval 的设置是默认设置,而且没有长时间运行的事务,则恢复每个数据库大约需要一分钟或更少的时间。恢复还原的数据时,如果长时间运行的事务在数据丢失时是活动的,那么恢复时间就由回滚这些事务的效果花费的时间控制。但是,在 SQL Server 2005 及更高版本中,数据库在崩溃恢复的撤消阶段或数据库镜像故障转移阶段可用,此功能称为“快速恢复”。

如果一个数据库的常规恢复所用时间远长于 1 分钟,recovery interval 设置为零,而且没有要回滚的长时间运行的事务,那么请与您的主要支持提供商联系,以解决这个恢复性能的问题。

恢复根据数据库的虚拟日志文件报告进度。在恢复开始时,从上一个检查点恢复分析和扫描日志。根据分析阶段的结果,恢复估计在恢复过程中将会读取多少日志。读取的日志量用于报告恢复进度。

如果 recovery interval 设置不再是默认值,那么完成数据库恢复所用时间要长多倍。例如,如果 recovery interval 更改为 10,那么完成恢复所用时间大约比 recovery interval 为默认设置零时长 10 倍。

日志增大时,需要使用较大(而非较小)的增量来确保 SQL Server 的启动时间较短。日志增量越小,SQL Server 对其进行初始化的时间越长。

还原操作后恢复时,如果长时间运行的事务已终止,就让服务器完成回滚进程。在回滚长时间运行的事务时终止服务器进程会导致恢复时间较长。如果关注回滚进程的长度,请询问系统管理员以确认活动是在服务器上发生的。

如果当前有长时间运行的事务而且其间发生了崩溃,则 SQL Server 开始恢复进程。在这种情况下,由于数据库在撤消阶段可用,因此恢复速度会加快。

有关在完整恢复模式下从备份还原数据时减少恢复时间的方法,请参阅减少还原数据库时所用的恢复时间