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

恢复模式(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. html websocket

    from:http://www.ibm.com/developerworks/cn/web/1112_huangxa_websocket/ websocket 规范升级过,在该链接的文章内未提及,后面 ...

  2. 对 griview获取的数据添加方法 6月

    <asp:TemplateField HeaderText="日期">                            <HeaderStyle CssCl ...

  3. mac显示和隐藏文件

    封装了一下显示和隐藏的脚本,方便mac上的文件隐藏和显示 if [ `defaults read com.apple.finder AppleShowAllFiles` = "1" ...

  4. Redis 的性能幻想与残酷现实

    2011 年,当初选择 Redis 作为主要的内存数据存储,主要吸引我的是它提供多样的基础数据结构可以很方便的实现业务需求.另一方面又比较担心它的性能是否足以支撑,毕竟当时 Redis 还属于比较新的 ...

  5. (新年快乐)ABP理论学习之本地化(2016第一篇)

    返回总目录 本篇目录 应用语言 本地化资源 获取本地化文本 扩展本地化资源 最佳实践 应用语言 一个应用至少有一种UI语言,许多应用不止有一种语言.ABP为应用提供了一个灵活的本地化系统. 第一件事情 ...

  6. 玩转Windows服务系列——创建Windows服务

    创建Windows服务的项目 新建项目->C++语言->ATL->ATL项目->服务(EXE) 这样就创建了一个Windows服务项目. 生成的解决方案包含两个项目:Servi ...

  7. CVTE实习求职经历

    今天,听到有好多同学最近要去面试CVTE这家企业,于是呢,准备将自己的经历写上来,给大家一个参考,希望能够大家一次帮助. 一.整体感觉 首先呢,先讲一下我个人对这家企业的整体感觉吧. 1. 第一次 对 ...

  8. 【VC++技术杂谈001】音频技术之调节音量及设置静音

    本文主要介绍如何使用混音器Mixer API函数实现系统音量调节,以及设置静音. 1.混音器的作用及结构 1.1混音器的作用 声卡(音频卡)是计算机进行声音处理的适配器,具有三个基本功能: (1)音乐 ...

  9. Fig 应用编排

    Fig是Docker的应用编排工具,主要用来跟 Docker 一起来构建基于 Docker 的复杂应用,Fig 通过一个配置文件来管理多个Docker容器,非常适合组合使用多个容器进行开发的场景. 说 ...

  10. G2 2.0 更灵活、更强大、更完备的可视化引擎!

    概述 G2作为一款技术产品,自诞生以来,服务于广大的Web工程师群体和一部分数据分析师.一直来,G2 因其易用的语法和扎实的可视化理论基础,广受使用者好评.G2 1.x 的可视化能力已经非常强大,使用 ...