SQL Server中的事务日志管理(4/9):简单恢复模式里的日志管理
当一切正常时,没有必要特别留意什么是事务日志,它是如何工作的。你只要确保每个数据库都有正确的备份。当出现问题时,事务日志的理解对于采取修正操作是重要的,尤其在需要紧急恢复数据库到指定点时。这系列文章会告诉你每个DBA应该知道的具体细节。
这个标题近乎是用词不当,因为很大程度上,运行在简单模式里不需要日志管理。在简单模式里,事务日志的唯一目的是在数据库恢复操作期间,保证事务的ACID属性,还有强制数据库的一致性和事务的持久性。事务日志不能被备份,不能用来数据库恢复,也不能用作日志传输。
在简单模式里工作
所有事务还是被记录,尽管特定大容量操作是最小化日志;实际上,日志级别和大容量日志里的应用非常类似。日志的活动部分还是照常维护,因此任何时候数据库在简单模式里启动后,恢复进程会进入,数据文件会用事务日志内容调和。
但是,在简单模式里,所有的虚拟日志文件(VLF)被标记为如第2篇里的不活动(可恢复),在定期的数据库检查点期间会自动截断。这就是说,当检查点发生时,文件里任何最高LSN小于最低LSN的VLF都会被截断,结果在事务文件里的空间会定期和经常重用。
简单恢复模式里的数据库总会是自动截断模式。如第3篇里描述的,所有的用户数据库,在第一次完整备份进行前,实际上是自动截断模式。
检查点多少时间发生一次?
为了恢复数据库到恢复区间(recovery interval)服务器配置选项指定时间里,基于需要处理的日志记录数,SQL Server引擎决定多少时间进行一次检查点。如果你的数据库是只读的,检查点之间的时间可能会很长。但是,在业务上频繁更新的系统,检查点会近每一分钟发生一次。点击https://msdn.microsoft.com/zh-cn/library/ms189573.aspx查看详细介绍。
正如上一篇文章讨论的,完整恢复模式里,事务日志维护“不活动的历史或关闭的事务”,连同活动/打开的事务。这个”历史“可以在日志备份里捕获,用来还原数据库到先前的一个时间点。但是,在简单模式里,这个历史不存在因此日志不能用来还原数据库到先前的一个时间点。事实上,在简单恢复模式里,你甚至不能进行事务日志备份,如下代码所演示。
USE master;
ALTER DATABASE TestDB
SET RECOVERY SIMPLE;
BACKUP Log TestDB
TO DISK ='C:\BACKUP\TestDB_log.bak'
GO

这表示你的备份计划只能在完整和差异备份计划里执行。
简单模式的支持与反对
简单模式的缺点,肯定是你丢失数据的机率会很高,因为你只能恢复数据库到最近的完整或差异备份。刚才提到过,如果丢失数据是以分钟衡量,不是以小时衡量,不要使用简单模式。
但是,如果你运行的是开发或测试数据库,或者甚至是一个只读的生产数据库,那么使用简单模式可能是一个可行的,甚至是一个明智的选择,这会大大减轻数据库上的维护负担。备份的存储空间会更少,后续的恢复操作会更简单。此外,因为事务日志是自动截断的,你很少有日志增长失控的风险,引起9002错误。
尽管简单模式明显减轻了事务日志管理的负担,这样认为是错误的。如果你使用这个模式,你会完全忘记日志维护。事务日志在数据库的日常操作中还是扮演着重要角色,你还是需要正确调整事务日志的大小和增长,根据数据库受到的事务本质和频率。不是因为日志是自动截断的,这不表示健壮和长时间运行的事务不会导致日志快速增长,如果你没有正确调整大小,还是会给你带来麻烦——这个会在第7篇-第8篇详细介绍。
SQL Server中的事务日志管理(4/9):简单恢复模式里的日志管理的更多相关文章
- SQL Server中的事务日志管理(7/9):处理日志过度增长
当一切正常时,没有必要特别留意什么是事务日志,它是如何工作的.你只要确保每个数据库都有正确的备份.当出现问题时,事务日志的理解对于采取修正操作是重要的,尤其在需要紧急恢复数据库到指定点时.这系列文章会 ...
- SQL Server中的事务日志管理(6/9):大容量日志恢复模式里的日志管理
当一切正常时,没有必要特别留意什么是事务日志,它是如何工作的.你只要确保每个数据库都有正确的备份.当出现问题时,事务日志的理解对于采取修正操作是重要的,尤其在需要紧急恢复数据库到指定点时.这系列文章会 ...
- SQL Server中的事务日志管理(5/9):完整恢复模式里的日志管理
当一切正常时,没有必要特别留意什么是事务日志,它是如何工作的.你只要确保每个数据库都有正确的备份.当出现问题时,事务日志的理解对于采取修正操作是重要的,尤其在需要紧急恢复数据库到指定点时.这系列文章会 ...
- SQL Server中的事务日志管理(3/9):事务日志,备份与恢复
当一切正常时,没有必要特别留意什么是事务日志,它是如何工作的.你只要确保每个数据库都有正确的备份.当出现问题时,事务日志的理解对于采取修正操作是重要的,尤其在需要紧急恢复数据库到指定点时.这系列文章会 ...
- 第17周翻译:SQL Server中的事务日志管理的阶梯:第5级:在完全恢复模式下管理日志
来源:http://www.sqlservercentral.com/articles/Stairway+Series/73785/ 作者:Tony Davis, 2012/01/27 翻译:刘琼滨. ...
- 第16周翻译:SQL Server中的事务日志管理,级别3:事务日志、备份和恢复
源自: http://www.sqlservercentral.com/articles/Stairway+Series/73779/ 作者: Tony Davis, 2011/09/07 翻译:刘琼 ...
- SQL Server中的事务日志管理的阶梯,级别1:事务日志概述
SQL Server中的事务日志管理的阶梯,级别1:事务日志概述 翻译:刘琼滨 谢雪妮 许雅莉 赖慧芳 级别1:事务日志概述 事务日志是一个文件,其中SQL服务器存储了所有与日志文件关联的数据库执行的 ...
- 浅谈SQL Server中的事务日志(三)----在简单恢复模式下日志的角色
简介 在简单恢复模式下,日志文件的作用仅仅是保证了SQL Server事务的ACID属性.并不承担具体的恢复数据的角色.正如”简单”这个词的字面意思一样,数据的备份和恢复仅仅是依赖于手动备份和恢复.在 ...
- 浅谈SQL Server中的事务日志(一)----事务日志的物理和逻辑构架
简介 SQL Server中的事务日志无疑是SQL Server中最重要的部分之一.因为SQL SERVER利用事务日志来确保持久性(Durability)和事务回滚(Rollback).从而还部分确 ...
随机推荐
- EWM ODO清理功能
ERP OBD下传到EWM会自动产生拣货任务(通常做法),但如果EWM因库存不足或其它原因无法拣货时一般要差异确认,对ODO行项目进行0确认.但问题是零确认后EWM标准流程是无法回传ERP的. ERP ...
- CMD command
过滤字符串查找:netstat -aon|findstr "80"
- Socket原理与编程基础(转)
一.Socket简介 Socket是进程通讯的一种方式,即调用这个网络库的一些API函数实现分布在不同主机的相关进程之间的数据交换. 几个定义: (1)IP地址:即依照TCP/IP协议分配给本地主机的 ...
- 奇怪吸引子---TreeScrollUnifiedChaoticSystem
奇怪吸引子是混沌学的重要组成理论,用于演化过程的终极状态,具有如下特征:终极性.稳定性.吸引性.吸引子是一个数学概念,描写运动的收敛类型.它是指这样的一个集合,当时间趋于无穷大时,在任何一个有界集上出 ...
- 用C#表达式树优雅的计算24点
思路:一共4个数字,共需要3个运算符,可以构造一个二叉树,没有子节点的节点的为值,有叶子节点的为运算符 例如数字{1, 2, 3, 4},其中一种解的二叉树形式如下所示: 因此可以遍历所有二叉树可能的 ...
- 关于ios中得路径详细讲解
利用create groups for any added folders 这样的方式表示的是将所有的资源都放在资源包得路径下,没有层次的概念利用create folder references fo ...
- 【转】TCP协议的无消息边界问题
http://www.cnblogs.com/eping/archive/2009/12/12/1622579.html 使用TCP协议编写应用程序时,需要考虑一个问题:TCP协议是无消息边界的, ...
- openwrt 编译newifi 应用程序
首先找交叉编译工具( toolchain ) Development Snapshots http://downloads.openwrt.org/snapshots/trunk/ 我需要的版本是 m ...
- 圆满完成Selenium自动化测试周末班培训课程!
圆满完成Selenium自动化测试周末班培训课程! http://automationqa.com/forum.php?mod=viewthread&tid=2704&fromuid= ...
- String.format详解(转)
一.前言 String.format 作为文本处理工具,为我们提供强大而丰富的字符串格式化功能,为了不止步于简单调用 String.format("Hello %s", " ...