SQL SERVER数据库 三种 恢复模式
SQL SERVER 2005 以后三种恢复模式: 简单(Sample),完全(Full),大批量(Bulk_Logged)
完全备份模型
完全备份模式是指在出现数据文件毁坏时丢失数据的风险最小。如果一个数据库在此模式下是,所有操作都会被完全记录下来,这意味着记录使用INSERT操作增加的每一行,使用DELETE操作删除的每一行和使用UPDATE操作修改的每一行,SQL server还会将使用BCP和BULK insert 操作插入的每一行完全被记录到事物日志中。如果遇到一个数据库备份之后一直在做着定期事务日志备份,那么我们就可以将数据库恢复到最后的日志备份之前任何一个时间点的状态。另外,如果在数据文件出故障之后有日志文件可用,那么我们可以将DB恢复到故障前已提交的最后一个日志的状态。SQL SERVER2005以后也支持一个成为日志标识(LOG MARKS)的特性,这允许我们在事务日志中放置一些参照点。如果数据是在完全恢复模式下,我们可以选择恢复某个日志标志时的状态。
在完全恢复模式下,SQL SERVER 也会完全记录CREATE INDDEX 操作,当从包含创建索引的事务日志备份中恢复时,由于索引不必重建,恢复操作会进行的非常迅速---所有的索引页都已经作为数据库备份的一部分被获取。在SQL SERVER 2000之前sql server只记录一个所有已经被创建的事实,这样一来当我们从日志文件备份中恢复时,整个索引将会不得不重新建立。
看起来完全恢复模式是最好的,但是这是要付出其他的代价的。其中最大的待机就是事务日志会相当的大。
大批量恢复模型(BULK Logged)
大批量恢复模式允许我们在出现介质故障时完全地还原数据库,它还能够对某些大批量操作提供最佳的性能和最小的日志使用空间。这些大批量操作包含 BULK INSERT, BCP, CREATE INDEX, SELECT INTO, WRITETEXT 和UPdatetext。对完全恢复模式,这些操作是完全被记录的,但是对大批量恢复模式,对它们的记录是最小量的。
当执行大批量操作中的某一种操作时,SQL SERVER 只会记录该操作曾经发生过和关于该操作分配空间的信息。但是因为SQL SERVER跟踪了该大批量操作实际上修改了那些区,所以该操作还是可以完全恢复的。在数据库中的每一个数据我那件都至少有一个成为大批量更改地图(BULK CHANGE MPA, BCM)的页面,SQL SERVER对该页面的管理类似 GAM SGAM的管理。
因为能够最小量的记录大批量的操作,所以这些操作能够比在完全备份模式时执行的要快的很多。在正确的BCM页面设置各个标志位需要一些开销,但是与记录每一个对数据和索引的单独更改相比,翻转这些位的开销要小的多。
如果数据库在bulk logged模式下并且没有实际执行任何大批量操作,以为该日志将会包含数据库所有改变的完整顺序记录,所以我们能够将数据库还原到任一个时间点或者命名日志标识。
在备份日志期间会有些开销,除了将事务日志的内容复制到备份介质,SQL SERVER会扫描BCM页面并在备份事务日志的同时备份所以修改过的区。日志文件自身会保持很小,但是该日志的备份可能会比日志文件大上很多倍,所以日志备份需要更多的时间并且可能会比FULL模式消耗更多的空间。还原一个在大批量模式所做的日志备份所消耗的时间与还原一个在FULL模式下所做的日志备份用的时间基本相同。还原过程不需要重做各个操作,恢复所有数据和索引结构所需要的信息都包含在日志备份中。
简单恢复模型(Sample)
简单恢复模型(Sample)
简单恢复模型提供了最简单的备份----恢复策略。每当有检查点发生时(检查点会定时地,经常地发生),事务日志都会被阶段。因此,所能进行备份的备份类型就是那些不需要日志备份的类型。这些类型的备份有完全备份数据库备份,增量备份,部分完全备份,部分增量备份和针对只读文件组的文件组备份。在简单恢复模式下如果试图进行日志备份,那么会收到错误信息,因为该模式的备份不需要日志的,一旦它所包含的所有事务被提交或者回滚,该日志的各部分就能够被重新利用,并且服务器或者事物出现故障时恢复也不需要这些事物信息。事实上,一旦数据库改变到简单模式下,日志就会被截断。
需要注意:简单模式不是不记录日志。所谓的“简单”是我们的备份策略不需要担心日志备份,虽然单个的日志记录并不如在完全备份模式下的,但是在简单模式下是的所有操作都会被记录。因为在大批量恢复模式中谈论的大批量操作在这里也会以最小量记录,所以简单模式下一个数据库的日志可能没有完全模式下的日志增长那么快那么多。这并不是说在简单模式下我们就不用关系日志文件的大小。就像在任何恢复模式中一样,活动食物的日志记录无法被截断并且在最老的活动食物之后开始的所有事物的日志记录都不能被截断。所以,如果有大型或者长时间的事务,仍然会需要大量日志空间。
SQL SERVER数据库 三种 恢复模式的更多相关文章
- SQL SERVER数据库三种数据插入方式
数据插入:INSERT INTO A(CBM,CMC) VALUES('1','测试')--单条数据插入INSERT INTO A(CBM,CMC)SELECT '1','测试'--单条数据插入INS ...
- Sql Server数据库备份和恢复:原理篇
本文与您探讨为什么Sql Server有完整备份.差异备份和事务日志备份三种备份方式,以及为什么数据库又有简单模式.完整模式和大容量日志模式这三种恢复模式.本文内容适用于2005以上所有版本的Sql ...
- sqlserver 三种恢复模式
sql server数据库提供了三种恢复模式:完整,简单和大容量日志,这些模式决定了sql server如何使用事务日志,如何选择它要记录的操作,以及是否截断日志.截断事务日志是删除己执行事务并把该日 ...
- SQL Server数据库的三种恢复模式:简单恢复模式、完整恢复模式和大容量日志恢复模式(转载)
SQL Server数据库有三种恢复模式:简单恢复模式.完整恢复模式和大容量日志恢复模式: 1.Simple 简单恢复模式, Simple模式的旧称叫”Checkpoint with truncate ...
- 转 一篇关于sql server 三种恢复模式的文章,从sql server 的机制上来写的,感觉很不错,转了
简介 SQL Server中的事务日志无疑是SQL Server中最重要的部分之一.因为SQL SERVER利用事务日志来确保持久性(Durability)和事务回滚(Rollback).从而还部分确 ...
- Sqlserver CheckPoint 在三种恢复模式中的不同表现
准备: 日志截断在下列情况下发生: 1.执行完 BACKUP LOG 语句时.2.在每次处理检查点时(如果数据库使用的是简单恢复模式).这包括 CHECKPOINT 语句所产生的显式检查点和系统生成的 ...
- SQL Server的三种物理连接之Loop Join(一)
Sql Server有三种物理连接Loop Join,Merge Join,Hash Join, 当表之间连接的时候会选择其中之一,不同的连接产生的性能不同,理解这三种物理连接对性能调优有很大帮助. ...
- Sql Server中三种字符串合并方法的性能比较
文章来自:博客园-DotNet菜园 最近正在处理一个合并字符吕的存储过程,在一个测试系统的开发中,要使用到字符串合并功能,直接在Sql中做.示例:有表內容﹕名称 內容1 abc1 ...
- SQL Server的三种物理连接之Hash Join(三)
简介 在 SQL Server 2012 在一些特殊的例子下会看到下面的图标: Hash Join分为两个阶段,分别为生成和探测阶段. 首先是生成阶段,将输入源中的每一个条目经过散列函数的计算都放到不 ...
随机推荐
- UITextField的文本框部分文本以*的方式来显示
#import "AppDelegate.h" @interface AppDelegate ()<UITextFieldDelegate>// 添加代理协议 @end ...
- HDOJ 1097 A hard puzzle
Problem Description lcy gives a hard puzzle to feng5166,lwg,JGShining and Ignatius: gave a and b,how ...
- ZROI2018普转提day1t1
传送门 分析 我们先二分一下最终的平均值mid,然后让序列中的每一个数都减去这个mid,之后用新序列的前缀和建一棵线段树,枚举起点i,然后求出此时在i+L-1~i+R-1范围内的前缀和的最大值,用这个 ...
- swing JCheckBox 更换复选框样式
Java Swing - 如何自定义JCheckBox复选标记图标 摘自 https://www.w3cschool.cn/java/codedemo-484050311.html import ja ...
- spark sql建表的异常
在使用spark sql创建表的时候提示如下错误: missing EOF at 'from' near ')' 可以看下你的建表语句中是不是create external table .... ...
- TimerTask
当TimerTask实例通过schedule方法使用之后,不能通过schedule方法调用第二次,如果重复使用就会抛异常TimerTask is scheduled already. 当你重新想利用这 ...
- java 的exception throw try catch
import java.util.*; public class MyException extends Exception { private static final Exception Exce ...
- [转]MySQL时间与字符串相互转换
转至:https://www.cnblogs.com/wangyongwen/p/6265126.html 时间.字符串.时间戳之间的互相转换很常用,但是几乎每次使用时候都喜欢去搜索一下用法:本文整理 ...
- SpringMVC执行流程(四)
DispatcherServlet 组建的默认配置 HandlerMapping有这两种:BeanNameUrlHandlerMapping,SimpleUrlHandlerMapping Handl ...
- Dev Envirenment - VS Code && C++ && MinGW
1. 安装编译器 安装 MinGW-W64 添加系统环境变量 注意: 1)安装 MinGW 的时候要选择正确的 CPU 处理器类型 2)添加系统变量后需要重启电脑系统 2. 安装本文编辑器 安装 VS ...