SQL Server事物日志

一、事物日志作用

每个 SQL Server 数据库都具有事务日志,用于记录所有事务以及每个事务对数据库所做的修改。事物日志的作用主要如下:

  • WAL事务预提交,减少了脏页刷盘的IO消耗,极大的提高了数据库性能
  • 崩溃恢复,当数据库发生意外宕机,数据库启动时会进行崩溃恢复的流程,会先读取事务日志进行前滚,将数据恢复到崩溃前的状态;然后进行回滚操作,对事务日志中未提交的事务进行rollback,以此保证数据库中数据的一致性
  • 还原数据库至指定的时间点,当数据库出现误操作等故障时,可通过完整备份+差异备份/日志备份进行数据恢复,将数据恢复故障前的时间点
  • 高可用性和灾难恢复解决方案: Always On 可用性组、数据库镜像和日志传送

对于内存中的脏页的刷盘主要有以下两种方式:

  • 检查点会周期性扫描内存数据将脏页进行刷盘
  • 当数据库内存达到高水位后,LazyWriter也会将内存中脏页进行刷盘

二、事务日志原理

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jLjJLMOd-1625626107192)(http://note.youdao.com/yws/res/78406/F43AC1129F2E46AE80BACAA017E034AD)]

如上图,SQL Server的日志由多个虚拟日志文件(Vitual Log Files(VLF))组成,事务日志被截断的基本单位是VLF而不是数据页,对于事务日志中的日志记录都有自己的逻辑序列号(LSN)进行标记。

1、事物日志状态分类

  • 活动(Alive):这个状态的VLF是活动的,因为它至少包含活动日志部分的一条记录,因此它需要被回滚或其他目的。这个状态的VLF是不活动的,但没被截断或备份,空间不可以重用。
  • 可恢复(Recoverable):这个状态的VLF是不活动的,但没被截断或备份,空间不可以重用。
  • 可重用(Reusable):这个状态的VLF是不活动的,它已被截断或备份,空间可以重用。
  • 未使用(Unused):这个状态的VLF是不活动的,在它里面还没有被记录的日志记录。

2、

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值