SQL server入门学习(一)事务日志体系结构

事务日志体系结构

每个SQL server数据库都具有事务日志,用于记录所有事务以及每个事务对数据库所做的修改。

事务日志逻辑体系结构

事务日志按逻辑运行,就好比一串日志记录。每条日志记录由一个日志序列号LSN标识。每条新日志记录均写入日志的逻辑结尾处,并使用一个比前面记录的LSN更高的LSN。每条日志记录都包含其所属事务的ID。对于每个事务,与事务相关联的所有日志记录通过使用可提高事务回滚速度的向后指针挨个链接在一个链中。

1、日志记录的类型

所执行的逻辑操作

记录已经修改数据的前像(执行操作前的数据副本)和后像(执行操作后的数据副本)

2、操作的恢复步骤取决于日志记录的类型

①记录逻辑操作:前滚(再次执行该操作);回滚(执行相反操作)

②记录前像后像:前滚(应用后像);回滚(应用前像)

3、事务日志中记录多种类型的操作

①每个事务的开始和结束

②每次数据修改(插入、更新或删除)+系统存储过程及DDL语句对包括系统表在内的任何表所做的修改

③每次分配或释放区和页

④创建或删除表或索引

回滚操作也记录在日志中。每个事务都在事务日志中保留空间,以确保存在足够的日志空间来支持由显式回滚语句或遇到错误引起的回滚。保存的空间量取决于在事务中执行的操作,但通常等于用于记录每个操作的空间量。

日志文件中从必须存在一以确保数据库范围内成功回滚的第一条日志记录到最后写入的日志记录之间的部份称为日志的活动部分,又称作“活动日志”或“日志尾部”。这是进行数据库完整恢复所需的日志部分。永远不能截断活动日志的任何部分!此第一条日志记录的日志序列号(LSN)成为最小回复序列号(MinLSN)。

差异和日志备份将还原的数据库推到了稍后的时间,该时间与一个更高的LSN相对应。

事务日志物理体系结构

数据库中的事务日志映射在一个或多个物理文件上。从概念上讲:日志文件就是一系列的日志记录。从物理上讲:日志记录序列被有效地存储在实现事务日志的物理文件集中。每个数据库必须至少有一个日志文件。

每个物理日志文件被分成了多个虚拟日志文件(VLF)。虚拟日志文件没有固定大小,且物理日志文件包含的虚拟日志文件数不固定。

数据库引擎在创建或扩展日志文件时动态的选择虚拟日志文件的大小。

数据库引擎尝试维护少量的虚拟文件。

在扩展日志文件后,虚拟文件的大小是现有日志大小和新文件增量大小之和。

管理员不能配置或设置虚拟日志文件的大小或数量。

2014

虚拟日志文件 (VLF) 的创建遵循此方法:

  • 如果下一次增长少于当前日志物理大小的 1/8,则创建 1 个 VLF,补偿此增长大小(从 SQL Server 2014 (12.x) 开始)
  • 如果下一次增长超过当前日志大小的 1/8,则使用 pre-2014 方法:
    • 如果增长少于 64 MB,创建 4 个 VLF,补偿此增长大小(如增长 1 MB,创建四个 256KB 的 VLF)
    • 如果增长在 64 MB 到 1GB 之间,创建 8 个 VLF,补偿此增长大小(如增长 512 MB,创建八个 64MB 的 VLF)
    • 如果增长大于 1GB,创建 16 个 VLF,补偿此增长大小(如增长 8 GB,创建十六个 512MB VLF)

如果这些日志文件由许多微小增量增长到的很大,则会具有很多虚拟日志文件。这会降低数据库启动以及日志备份和还原操作的速度。

 

未完成。2021.01.08


参考网站:https://docs.microsoft.com/zh-cn/sql/relational-databases/sql-server-transaction-log-architecture-and-management-guide?view=sql-server-2017

先了解一下基本原理,然后再看各版本之间的区别吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值