事务日志以及虚拟日志文件(VLFs)概述
Part 1:事务日志
每个 SQL Server 数据库都具有事务日志,用于记录所有事务以及每个事务对数据库所做的修改。必须定期截断事务日志以避免它被填满。但是,一些因素可能延迟日志截断,因此监视日志大小很重要。某些操作可以最小日志量进行记录以减少其对事务日志大小的影响。事务日志是数据库的重要组件,如果系统出现故障,则可能需要使用事务日志将数据库恢复到一致状态。删除或移动事务日志以前,必须完全了解此操作带来的后果。
例如,当用户发出一个插入操作(INSERT),它被会被记录在事务日志中。如果出现了错误,数据库可以回滚或还原事务之前的状态,并防止数据损坏。再比如,一个员工需要将2000条数据插入到数据库中,这时候突然间服务器断电。由于insert语句已经写入了事务日志并且知道了出现了错误,它将会回滚这次操作。如果没有这个功能,你可以想象我们需要数据筛选看到底成功插入了多少行,然后再更改其他行的代码执行其他操作。 更有甚者,如果是随机插入,你必须确定已经插入了什么数据,什么数据需要被排除在外。这可能需要非常非常长的时间。
日志条目是顺序的记录在文件中。整个日志文件会被分成很多小块称之为虚拟日志文件 。当一个虚拟日志文件被填满的时候,他会自动地去插入到下一个虚拟日志文件。当虚拟日志文件已经到整个日志文件的末尾的时候,他将会绕回到开始的虚拟日志文件并且覆盖掉之前的数据。
借用别人的图。操作如下图所示:

Part 2:虚拟日志文件
每个物理的事务日志文件内部分为多个虚拟日志文件,如上图的(virtual log 1-4)。在物理日志文件中没有指定虚拟日志文件大小也不能指定到底要存在多少个虚拟日志文件。数据库引擎会自动的控制它们,但出于性能原因,数据库引擎会试图维持少量的虚拟文件个数。
如果日志文件开始设置的比较小,然后设置的增长率或大小也比较小。在日志文件不断增大的过程中,每次都是按许多微小增加,它将增加虚拟日志文件的数量,而影响系统性能。这就是为什么要将自动增长设置为一个较大的增量。如果日志设置一次增长 1 MB 会不断产生更多的虚拟日志文件中。不断增加的虚拟日志文件会影响数据库启动和日志的备份/恢复操作。
在一个数据库中没有一个正确或者是错误的虚拟日志文件个数的界定。但是记住,如果你的数据库性能变的很糟糕,这可能是一个原因。您可以使用 DBCC LOGINFO 数据库中检查 VLF 的数目。
DBCC LOGINFO
结果:

关于大量的虚拟日志文件影响性能的问题,会在数据库调优系列中做详细的介绍。
事务日志以及虚拟日志文件(VLFs)概述的更多相关文章
- DBCC SHRINKFILE收缩日志/收缩数据库/收缩文件
DBCC SHRINKFILE 收缩相关数据库的指定数据文件或日志文件大小. 语法 DBCC SHRINKFILE ( { file_name | file_id } { [ ,t ...
- Apache日志不记录图片文件设置方法和来源日志的配置
Apache日志不记录图片文件设置方法 <FilesMatch "\.(ico|gif|jpg|swf)">SetEnv IMAG 1</FilesMatch&g ...
- mysql之 日志体系(错误日志、查询日志、二进制日志、事务日志、中继日志)
一. mysql错误日志:错误日志记录的事件:a).服务器启动关闭过程中的信息b).服务器运行过程中的错误信息c).事件调试器运行一个事件时间生的信息d).在从服务器上启动从服务器进程时产生的信息lo ...
- zookeeper 事务日志与快照日志
zookeeper日志各类日志简介 zookeeper服务器会产生三类日志:事务日志.快照日志和log4j日志. 在zookeeper默认配置文件zoo.cfg(可以修改文件名)中有一个配置项data ...
- 使用SVN钩子强制提交日志和限制提交文件类型
Subversion本身有很好的扩展性,用户可以通过钩子实现一些自定义的功能.所谓钩子实际上是一种事件机制,当系统执行到某个特殊事件时,会触发我们预定义的动作,这样的特殊事件在Subversion里有 ...
- mysql事务、redo日志、undo日志、checkpoint详解
转载: https://zhuanlan.zhihu.com/p/34650908 事务: 说起mysql innodb存储引擎的事务,首先想到就是ACID(不知道的请google),数据库是如何做到 ...
- Linux centosVMware Nginx访问日志、Nginx日志切割、静态文件不记录日志和过期时间
一.Nginx访问日志 vim /usr/local/nginx/conf/nginx.conf //搜索log_format 日至格式 改为davery格式 $remote_addr 客户端IP ...
- Linux centos7 VMware Apache访问日志不记录静态文件、访问日志切割、静态元素过期时间
一.Apache访问日志不记录静态文件 网站大多元素为静态文件,如图片.css.js等,这些元素可以不用记录 vim /usr/local/apache2.4/conf/extra/httpd-vho ...
- mysql基础之日志管理(查询日志、慢查询日志、错误日志、二进制日志、中继日志、事务日志)
日志文件记录了MySQL数据库的各种类型的活动,MySQL数据库中常见的日志文件有 查询日志,慢查询日志,错误日志,二进制日志,中继日志 ,事务日志. 修改配置或者想要使配置永久生效需将内容写入配置文 ...
随机推荐
- Android,不小心关闭了某个小窗口怎么恢复,方法介绍
Window > Show View > Other 需要哪个窗口就用哪个~
- Maven 配置使用小技巧
Spark开发中遇到了一些小问题,都是大神随便一个手指头帮我解决的.保持学习,积累吧! 一. 基于Intellij IDEA编辑器 1. 快捷键 注释/去注释 Ctrl+Shift+? 2. re ...
- MySQL视图
什么是视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,并可以将其当作表来使用. 理解:使用SQL语句获取的结果, ...
- php无法创建中文名的文件
需要使用iconv强制转换后才可以.
- 没有为 COM 互操作注册程序集 请使用 regasm.exe /tlb 注册该程序集——解决办法
错误现象: 错误 6 没有为 COM 互操作注册程序集“DevExpress.Utils.v13.1, Version=13.1.7.0, Culture=neutral, PublicKeyToke ...
- iOS - YYAdd对UIDevice的拓展
YYKit中对UIDevice的拓展,accumulate knowledge !!! 首先 #include <sys/socket.h> #include <sys/sysctl ...
- HDU 2204Eddy's爱好(容斥原理)
Eddy's爱好 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Sta ...
- linux中给PHP安装mongodb的扩展
centos5.6 32bit php 5.2.17 php安装路径 /usr/local/php phpize路径 /usr/bin php-config路径 /usr/bin php.ini路径 ...
- yii2 session的使用方法
yii2打开session use yii\web\Session; $session = Yii::$app->session; // check if a session is alread ...
- Java简单示例-用户登录、单个页面的增删改查及简单分页
index.html -登录->stulist.jsp (index.html传递到LoginServlet,进行登录检测及写入session,NO返回index.html界面,OK 跳转到s ...