数据库的恢复模型是否影响故障恢复,在简单恢复模式里,你是否会丢失事务?在今天的文章里我想谈下这点,详细讨论下。

恢复模式(Recovery Models)

对于这个问题的最简单的答案是不会:恢复模型不会影响故障恢复,只用简单恢复模式你不会丢失事务。那数据库恢复模型的目的是什么?

你用恢复模型你只告诉SQL Server如何处理事务日志。SQL Server提供下列3个恢复模型:

  • 完整(FULL)
  • 简单(SIMPLE)
  • 大容量日志(BULK_LOGGED)

我们来细谈下。每个新建的数据库默认是完整恢复模式(在完整数据库备份后!)。完整恢复模式意味着你需要进行定期事务日志备份。在事务日志备份后,SQL Server可以标记VLFs(虚拟日志文件(Vitural Log Files))为不活动,在下个检查点可以重写它们。如果你不进行定期的事务日志备份,SQL Server不能重写VLFs(因为它们还是活动的),这样的话你的事务日志会增长。

增长事务日志很慢(因为需要零值初始化(Zero Initialization))并导致日志碎片(Log Fragmentation)(大量不同的VLFs)。定期日志备份的另一个好处是你可以进行所谓的时间点恢复(Point in Time Recovery),即恢复你的数据库到指定的时间点。

如果你不在乎你的数据(我会被大家笑话的!),你可以把你的数据库恢复模式切换为简单。使用简单恢复模式,你不需要麻烦自己进行日常事务日志备份,因为在检查点(CHECKPOINT)SQL Server会标记VLFs为不活动。如果你没有长时间运行的事务,在这个恢复模式里,你的事务日志不会增长。简单恢复模式的一个副作用就是你不能进行时间点恢复(Point in Time Recovery)

当你的数据库崩溃或损坏,你只能恢复你的数据库到你最近的完整数据库备份,外加可用的差异备份。在这个情况下你丢失多少数据取决于你最近的完整/差异备份的情况。对于OLTP数据库,我从不推荐简单恢复模式。在数据仓库的情景下倒可以使用,因为存储的数据基本不会有啥改变。

最后SQL Server还提供你大容量日志恢复模式。在SQL Server里,当你运行特定的操作,它们可以是最小化日志(Minimally Logged)(在SQL Server里没有无日志操作!)。如果你用的是大容量日志恢复模式。最小化日志意味着SQL Server不会写各个事务日志记录到事务日志,当你进行这样操作的时候。

SQL Server只通过所谓的BCM页(大容量修改映射页(Bulk Changed Map Page))标记修改的区为已修改。这样的话,当你进行最小化日志操作时,你的事务日志不会变得那么大。不好的副作用是在那期间(数据库运行在大容量日志恢复模式)你不能进行时间点恢复。因此在这个恢复模式下,你应该尽量缩短它的时间。例如:当你在运行最小化日志操作的时候,你才把数据库从完整恢复模式切换回大容量日志模式(运行完后切换回完整恢复模式)。

当你运行在大容量日志恢复模式里,你还是要进行事务日志备份。但它们的大小不会变小,因为SQL Server复制修改的分区(基于BCM页)到事务日志备份——如你从下图看到的一样。

小结

故障恢复过程绝不会受恢复模式影响。恢复模式志影响你的事务日志,还有你是否能进行时间点恢复。通常建议你应该使用默认的完整恢复模式加定期事务日志备份。因为用这个方法你可以最小化你的数据丢失。

感谢关注!

原文链接:

https://www.sqlpassion.at/archive/2016/05/23/crash-recovery-recovery-models

故障恢复和恢复模式(Crash Recovery & Recovery Models)的更多相关文章

  1. 二:Recovery models(恢复模式)

    For each database that you create in SQL Server, with the exception of the system databases, you can ...

  2. Mac OS 10.12 - 在VMwear Workstation12.5.2中以两种方式进入恢复模式(Recovery)!!!

    注意:如果你打算安装Mac OS10.12 到虚拟机里面学习,那么我强烈建议你在没有安装任何其它软件之前,按照我这篇博客来进入恢复模式(Recovery),禁用Rootless机制!!!这样处理后,你 ...

  3. 在VMwear 11中的Mac OS X 10.11+ 进入恢复模式(Recovery HD)

    1,选中要启动的虚拟机,随后点击VM菜单的启动按钮后面向下箭头,随后点击菜单项”打开电源时进入固件“. 2,在虚拟机里面,用上下键移动到”Enter setup“上,随后继续下一步! 3,选中”Boo ...

  4. Android设备运用Clockworkmod Recovery恢复模式安装定制的Rom

    Clockworkmod Recovery是一个由Cyanogen团队开发的用于Android设备的第三方定制Recovery恢复模式,也称为CWM Recovery,具体它有什么用处呢?请看关于Go ...

  5. 关于Google Android平台的ClockworkMod Recovery恢复模式

    lockworkMod Recovery,它也被称为Clockwork与CWM,它是装载Google Android操作系统设备的一个自定义的Recovery恢复模式,它可以使得相关Android设备 ...

  6. Oracle实例的恢复、介质恢复( crash recovery)( Media recovery)

    实例的恢复( crash recovery) 什么时候发生Oracle实例恢复? shutdown abort; 数据库异常down掉(机器死机,掉电...) 实例恢复的原因是数据有丢掉,使用redo ...

  7. 进入恢复模式(Recovery HD)

    进入恢复模式(Recovery HD) 1,选中要启动的虚拟机,随后点击VM菜单的启动按钮后面向下箭头,随后点击菜单项”打开电源时进入固件“. 2,在虚拟机里面,用上下键移动到”Enter setup ...

  8. SQL Server恢复软件SysTools SQL Recovery/SysTools SQL Server Recovery Manager

    SQL Server恢复软件SysTools SQL Recovery/SysTools SQL Server Recovery Manager http://www.systoolsgroup.co ...

  9. SQL Server中的事务日志管理(6/9):大容量日志恢复模式里的日志管理

    当一切正常时,没有必要特别留意什么是事务日志,它是如何工作的.你只要确保每个数据库都有正确的备份.当出现问题时,事务日志的理解对于采取修正操作是重要的,尤其在需要紧急恢复数据库到指定点时.这系列文章会 ...

随机推荐

  1. 学习笔记——SQLite介绍

    简介:Google为android的较大数据的处理提供了SQLlite, 他在数据存储.管理.维护.等各方面都相当出色功能也非常强大. 1.创建数据库 Android 为了让我们能够更加方便地管理数据 ...

  2. Fedora17安装MySQL及配置

    一.安装 以下操作均是在root用户下进行操作.首先,如果以前有安装过,这次卸载后安装的话,最好是先将/var/lib/mysql/里面的内容全部删掉(如果不重要的话),我就遇到过没有删除这些东西,结 ...

  3. eclipse配置javah命令

    1.找到javah命令所在的目录    我的为 /usr/bin/javah 2.打开eclipse     如图点击第二项 3.配置  如图 ${project_loc}/src -classpat ...

  4. [SDK2.2]Windows Azure Storage (16) 使用WCF服务,将本地图片上传至Azure Storage (上) 客户端代码

    <Windows Azure Platform 系列文章目录> 前一章我们完成了服务器端的代码,并且已经发布到了Windows Azure云端. 本章我们将实现客户端的代码,客户端这里我们 ...

  5. [译]libev和libevent的设计差异

    本文译自what's the difference between libev and libevent? 作者是libev作者 [问]两个库都是为异步io调度而设计,在Linux上都是使用epoll ...

  6. Oralce 重建EM服务,OracleDBConsoleOracle

    今天打开Oracle ,想进em看看,结果发现OracleDBConsoleOracle服务老是报错: OracleDBConsoleOracle 服务因 2 (0x2) 服务性错误而停止. 搞不懂, ...

  7. jsdoc

    一.javascript注释规范 我们在编写javascript文件的时候,一般会添加一些注释.例如一些文件.类.方法和属性都应该用合适的标记和类型进行注释.这里不但方便我们的阅读,也能养成一个好的习 ...

  8. Sql Server系列:Microsoft SQL Server Management Studio模板资源管理器

    模板资源管理器是Microsoft SQL Server Management Studio的一个组件,可以用来SQL代码模板,使用模板提供的代码,省去每次都要输入基本代码的工作. 使用模板资源管理器 ...

  9. SQL Server 2014新特性探秘(3)-可更新列存储聚集索引

    简介      列存储索引其实在在SQL Server 2012中就已经存在,但SQL Server 2012中只允许建立非聚集列索引,这意味着列索引是在原有的行存储索引之上的引用了底层的数据,因此会 ...

  10. 解密jQuery内核 DOM操作的核心buildFragment

    文档碎片是什么 http://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-B63ED1A3 DocumentFragment is a & ...