Sql Server 事务日志

Sql Server事务日志文件是数据库文件的重要组成部分,事务日志主要用来存放数据库的修改记录。数据库为了得到更高的写入效率和性能,同时保证ACID特性,数据在写入时,会将更新先写入事务日志,因为事务日志是连写的,所以写事务会比较快。简单来说,顺序写入时,磁盘的磁头会保持在一定的区域内连续写入,而数据写入数据文件时,有随机性,磁盘的磁头移动消耗的时间要比数据写入日志文件时多。

Sql Server对于事务日志文件的管理,是将日志文件在逻辑上分成若干个文件(VLFS),方便管理。

创建一个1M的日志文件

执行DBCC Loginfo

在此可以看到事务日志被分成了4个虚拟的日志文件,那么SQL Server创建数据库时,日志文件的大小和所分配的VLFS数量有什么关系呢?如果日志文件增加,VLFS是如何变化的呢 ?

VLFS个数由SQL Server管理,当Create或Alter Ldf文件时,SQL Server根据初始值或者增量的大小分配VLFS文件数。LDF文件每次增加的数值和每次分配的VLFS个数如下


ldf文件的大小


VLF的数量


1M到64M


4


64M到1GB


8


大于1GB


16

对数据库的所有修改在写入数据文件之前,会先记录到事务日志中。日志记录会按照先后顺序记录到日志文件的逻辑末尾,并分配一个全局唯一的日志序列号(Log Sequence  Number),这个序列号按照顺序分配。

在日志中,有活动日志的概念,可以理解为未写入数据文件的事务日志。

当数据库做CheckPoint,已提交的日志数据会刷新到数据文件中,则活动日志区间会前移,一直到未提交的日志序列号。

在简单日志模式下,CheckPoint之后,非活动日志的内容将会被清空,清空之后的日志空间可以被冲用。这也是简单日志模式下日志文件总是很小的原因。

在完整或批量日志模式下,只有备份日志后,日志空间才能被重用。

许多类型的操作都会被记录在事务日志中,这些操作包括:

每个事务的开始和结束

每次数据修改

每次分配或释放区或者页

创建删除表或者索引

时间: 2024-08-08 13:58:00

Sql Server 事务日志的相关文章

SQL Server事务日志分析

SQL Server事务日志分析 fn_dblog()和fn_dump_dblog()函数介绍 SQL Server有两个未公开的函数fn_dblog()和fn_dump_dblog()非常有用并且提供的信息量很大.你可以使用这些函数来获取100多列大量的有用信息. fn_dblog()用于分析数据库当前的事务日志文件,它需要两个参数,分别为事务开始LSN和结束LSN,默认为NULL,表示返回事务日志文件的所有日志记录. 例如: SELECT * FROM fn_dblog(null,null)

Sql Server 事务日志(三)

SQL server的日志文件会随着数据修改的增加而变大,在处理日志文件时,我们常用的方式是将日志截断,并收缩. Backup log databasename to disk='' dbcc shrinkfile(databasename_log) 当然,如果磁盘空间紧张,可以将恢复模式改成‘simple’的方式使日志截断,然后再收缩日志 alter database test set recovery simple; DBCC shrinkfile(test_log) alter datab

人人都是 DBA(VI)SQL Server 事务日志

SQL Server 的数据库引擎通过事务服务(Transaction Services)提供事务的 ACID 属性支持.ACID 属性包括: 原子性(Atomicity) 一致性(Consistency) 隔离性(Isolation) 持久性(Durability) 事务日志(Transaction Log) 事务日志(Transaction Log)存储的是对数据库所做的更改信息,让 SQL Server 有机会恢复数据库.而恢复(Recovery)的过程就是使数据文件与日志保持一致的过程.

翻译:SQL Server事务日志管理的阶段,1级:事务日志概述

原文链接:http://www.sqlservercentral.com/articles/Stairway+Series/73775/ 原文作者: Tony Davis, 2013/10/30 (第一次出版: 2011/06/17) 该系列 本文是SQL Server中"Stairway系列:事务日志管理的阶梯"的一部分 当事情进展顺利的时候,没有必要特别意识到事务日志的作用或工作原理. 你只需要确信每个数据库都有正确的备份机制. 当事情出错时,对事务日志的理解对于采取纠正措施是非常

如何通过trn日志文件恢复SQL Server 事务日志 还原 备份

首先恢复时一个完整的备份,但在完整的备份里一定要选择with nonerecovery(企业管理器里选项中是第2项) sql 语句是: restore database mydata from disk = 'c:\temp\movedb.bak'  with norecovery 这时数据库就会变成恢复模式,这样你就可以一条一条的把trn文件添加进行恢复了. 语句是: restore log Mydata from disk =    "D:\Program Files\Microsoft S

SQL Server 2014 日志传送部署(2):日志传送系统要求和实验架构

13.2 部署日志传送 13.2.1 部署日志传送的系统要求 SQL Server 2014日志传送的部署对硬件基础设施有一定的要求,下面将概述这些系统要求. 网络 日志传送不一定需要Windows域环境,但是Windows域环境方便了日志传送的配置和管理:相对非域环境,其安全性提升不少. 参与日志传送的SQL Server服务器必须在网络中相互连通,主服务器能够将事务日志备份到共享文件夹,辅助服务器可以将事务日志备份复制到本地文件夹:监视服务器能够连接到主服务器和辅助服务器. 服务器和存储 主

如何截断SQL Server2008+事务日志空间

SQL数据库事务日志记录数据库的任何更改,用户可回滚事务日志来恢复数据,但随着数据库使用时间变长,日志文件也会变得很大. 若要避免数据库的事务日志被填满,例行备份至关重要.做了日志备份后,会释放不活跃的VLF,增加日志的可用空间.但默认情况下备份日志,其日志文件的大小并未变化,如下图 备份前,总大小24.13MB 备份后,总大小仍然为24.13MB,但已用空间占比从93.1%降至11.0% 也就是,已使用日志空间是减小了,但未使用日志空间并未释放.其实,如果磁盘空间足够的话,可以不用收缩空间 那

如何处理SQL Server事务复制中的大事务操作

如何处理SQL Server事务复制中的大事务操作 事务复制的工作机制 事务复制是由 SQL Server 快照代理.日志读取器代理和分发代理实现的.快照代理准备快照文件(其中包含了已发布表和数据库对象的架构和数据),然后将这些文件存储在快照文件夹中,并在分发服务器中的分发数据库中记录同步作业. 日志读取器代理监视为事务复制配置的每个数据库的事务日志,并将标记为要复制的事务从事务日志复制到分发数据库中,分发数据库的作用相当于一个可靠的存储-转发队列. 分发代理将快照文件夹中的初始快照文件和分发数

SQL Server 2005 日志文件过大处理

由于安装的时候没有计划好空间,默认装在系统盘,而且又没有做自动备份.截断事务日志等,很快LDF文件就达到十几G,或者几十G ,此时就不得不处理了. 备份和计划就不说了,现在就说下怎么把它先删除吧: 1:先分离数据库 2:为了保险,先不要删除,把LDF文件重命名下 3:附件数据库. 4:OK. 以上可能遇到的问题: 1:有用户连接,无法分离(勾选“断开所有连接”) 2:附件数数据库的时候提示找不到LDF文件,不要慌,在附件的时候,把LDF的路径一项删除,然后点击"确定",这样就附件成功了