SQL三种恢复模式有什么区别?

请详细说明一下,不要复制的。谢谢!
2025-04-15 05:48:56
推荐回答(3个)
回答1:

一、定义不同

Simple简单恢复模式,Simple模式的旧称叫”Checkpoint with truncate log“。Full完整恢复模式,和Simple模式相反,Full模式的旧称叫”Checkpoint without truncate log“。Bulk-logged 大容量日志恢复。

二、功能不同

完整sql server恢复模式:

数据库引擎把所有操作都记录到事务日志上,并且数据库引擎绝对不会截断日志,完整恢复模式能使数据库恢复到故障时间点。

简单sql server恢复模式:

数据库引擎最低限度地记录大多数操作,并在每个检查点之后截断事务日志。它不能备份或还原事务日志,也不能还原单独的数据页。

大容量日志模式:

数据库引擎对大容量操作(select into和bulk insert)进行最小记录。如果一个日志备份包含任何大容量操作,就可以使数据库恢复到日志备份的结尾,但不能恢复到某个时间点,它仅用于大容量操作期间。

三、好处不同

在Simple模式下,SQL Server会在每次checkpoint或backup之后自动截断log,也就是丢弃所有的inactive log records,仅保留用于实例启动时自动发生的instance recovery所需的少量log,这样做的好处是log文件非常小,不需要DBA去维护。

Full模式SQL Server不主动截断log,只有备份log之后,才可以截断log,否则log文件会一直增大,直到撑爆硬盘,因此需要部署一个job定时备份log。Full的好处是可以做point-in-time恢复,最大限度的保证数据不丢失,一般用于critical的业务环境里。

Bulk-logged是针对以下Bulk操作,会产生尽量少的log: 

1、Bulk load operations (bcp and BULK INSERT). 

2、SELECT INTO. 

3、Create/drop/rebuild index 通常bulk操作会产生大量的log,对SQL Server的性能有较大影响,bulk-logged模式的作用就在于降低这种性能影响,并防止log文件过分增长。

回答2:

SQL Server数据库有三种恢复模式:简单恢复模式、完整恢复模式和大容量日志恢复模式。

  1. Simple 简单恢复模式,

    Simple模式的旧称叫”Checkpoint with truncate log“,其实这个名字更形象,在Simple模式下,SQL Server会在每次checkpoint或backup之后自动截断log,也就是丢弃所有的inactive log records,仅保留用于实例启动时自动发生的instance recovery所需的少量log,这样做的好处是log文件非常小,不需要DBA去维护、备份log,但坏处也是显而易见的,就是一旦数据库出现异常,需要恢复时,最多只能恢复到上一次的备份,无法恢复到最近可用状态,因为log丢失了。
    Simple模式主要用于非critical的业务,比如开发库和测试库,但是道富这边的SQL Server(即使是生产库)大都采用Simple模式,是因为这边的SQL Server大都用于非critical的业务(critical的数据库大都采用Oracle和DB2),可以忍受少于1天的数据丢失(我们的job每天都会定时备份全库)。

  2. Full 完整恢复模式,

    和Simple模式相反,Full模式的旧称叫”Checkpoint without truncate log“,也就是SQL Server不主动截断log,只有备份log之后,才可以截断log,否则log文件会一直增大,直到撑爆硬盘,因此需要部署一个job定时备份log。Full的好处是可以做point-in-time恢复,最大限度的保证数据不丢失,一般用于critical的业务环境里。缺点就是DBA需要维护log,增加人员成本(其实也就是多了定时备份log这项工作而已)。

  3. Bulk-logged 大容量日志恢复

    Bulk-logged模式和full模式类似,唯一的不同是针对以下Bulk操作,会产生尽量少的log:
    1) Bulk load operations (bcp and BULK INSERT).
    2) SELECT INTO.
    3) Create/drop/rebuild index
    众所周知,通常bulk操作会产生大量的log,对SQL Server的性能有较大影响,bulk-logged模式的作用就在于降低这种性能影响,并防止log文件过分增长,但是它的问题是无法point-in-time恢复到包含bulk-logged record的这段时间。
    Bulk-logged模式的最佳实践方案是在做bulk操作之前切换到bulk-logged,在bulk操作结束之后马上切换回full模式。


回答3:

完整恢复模式:为需要事务持久性的数据库提供了常规数据库维护模式。此模式完整记录所有事务,并将事务日志记录保留到对其备份完毕为止。如果能够在出现故障后备份日志尾部,则可以使用完整恢复模式将数据库恢复到故障点。完整恢复模式也支持还原单个数据页。
大容量日志恢复模式:此恢复模式可大容量日志记录大多数大容量操作它只用作完整恢复模式的附加模式。对于某些大规模大容量操作(如大容量导入或索引创建),暂时切换到大容量日志恢复模式可提高性能并减少日志空间使用量。仍需要日志备份。与完整恢复模式相同,大容量日志恢复模式也将事务日志记录保留到对其备份完毕为止。由于大容量日志恢复模式不支持时点恢复,因此必须在增大日志备份与增加工作丢失风险之间进行权衡。
简单恢复模式:简单恢复模式可最大程度地减少事务日志的管理开销,因为不支持日志备份。如果数据库损坏,则简单恢复模式将面临极大的工作丢失风险。数据只能恢复到已丢失数据的最新备份。因此,在简单恢复模式下,备份间隔应尽可能短,以防止大量丢失数据。但是,间隔的长度应该足以避免备份开销影响生产工作。在备份策略中加入差异备份可有助于减少开销。