共勉之~SQLserver日志底层分析(粗)

SQLserver在底层存储分别会在MSSQL目录下自动创建mdf数据文件和ldf日志文件
接下来详细介绍下数据库在应用层面操作时底层是怎么实现的:

 SqlServer为完成数据恢复或事务回滚,对数据库中任何数据的修改都会记录在重做日志文件中。日志文件中的最小单位是日志记录,一条日志记录对应一个使数据库状态发生变化的操作。与表中的记录一样,日志记录也是由多个列构成,每个列对应数据修改操作的一个属性。
日志文件中的日志记录在某些条件下是不需要的 这些条件包括:
日志记录所在的事务已经提交。
日志记录修改的数据页已经被checkpoint进程写入磁盘。
(checkpoint是一个内部事件,这个事件激活以后会触发数据库写进程(DBWR)将数据缓冲				  (DATABUFFER CACHE)中的脏数据块写出到数据文件中。,我认为是个flush)

任何数据库备份不再需要这个日志记录
数据库镜像,数据库复制等环境不再需要读取这个日志记录
Checkpoint与LSN详解:
checkpoint是重做日志对数据页刷新到磁盘的检查点,通过LSN号保存记录,作用是当发生宕机事件后 再次启动时会查询到checkpoint点在该检查点之后发生的事务修改恢复到磁盘
假设数据库未处于镜像,复制的环境中:
根据存储的日志记录情况 重做文件中VLF可以分为以下4种状态:
active:VLF中存在属于活动事务的日志记录,活动的事务指的是未结束的事务
Recoverable:不包含活动事务的日志,即数据库刺死处于维护一个完整日志序列的状态,而这些VLF还未进行本分;或者数据库处于复制,镜像等需要使用重做日志
传送方式同步数据库间数据的环境 VLF包含未传送的重做数据
r

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值