文档章节

预写式日志(Write-Ahead Logging (WAL))

o
 osc_z1hvg4cu
发布于 2018/04/24 16:48
字数 946
阅读 13
收藏 0

精选30+云产品,助力企业轻松上云!>>>

预写式日志(Write-Ahead Logging (WAL))

 转自:http://www.cnblogs.com/wenBlog/p/4423497.html

     SQL Server中使用了WAL(Write-Ahead Logging)技术来保证事务日志的ACID特性。而且大大减少了IO操作。

     WAL的核心思想是:在数据写入到数据库之前,先写入到日志.再将日志记录变更到存储器中。

        SQL Server修改数据的步骤

    

 

 

     1.在SQL Server的缓冲区的日志中写入”Begin Tran”记录

     2.在SQL Server的缓冲区的日志页写入要修改的信息

     3.在SQL Server的缓冲区将要修改的数据写入数据页

     4.在SQL Server的缓冲区的日志中写入”Commit”记录

     5.将缓冲区的日志写入日志文件

     6.发送确认信息到客户端(SMSS,ODBC等)

     7.将缓冲区内的页写入到磁盘(Lazy Writer或CheckPoint在这点之前开始)

     本篇着重介绍将缓冲区的数据页写入到磁盘的两个过程:CheckPoint和Lazy Writer。 
     当事务遇到Commit时,仅仅是将缓冲区的所有日志页写入磁盘中的日志文件;而直到Lazy Writer或CheckPoint时,才真正将缓冲区的数据页写入磁盘文件。

     CheckPoint:系统会按照恢复间隔 SQL Server 配置选项确定的间隔自动发出检查点。 Checkpoint 方法会立即发出检查点,而无论恢复间隔设置为何。

      这个CheckPoint的间隔是一个服务器级别的参数。可以通过sp_config进行配置,也可以在SSMS中进行配置:image

需要注意的是CHECKPOINT 权限预设会授予系统管理员 (sysadmin) 固定伺服器角色及 db_owner 與 db_backupoperator 固定资料库角色的成員,並不可加以转让。更短的恢复间歇意味这更短的恢复时间和更多的磁盘IO,而更长的恢复间歇则带来更少的磁盘IO占用和更长的恢复时间.

checkpoint的触发条件

1. 自上次检查点后产生大量日志

2. 服务实例关闭

3. 数据库完整备份或差异备份(日志备份不会触发checkpoint)

4. 数据库恢复模式为简单恢复模式下当日志文件使用超过70%时

Lazy Writer:lazywriter是一个系统进程,其主要任务是成批刷新老化的脏缓冲区(指包含更改的缓冲区,这些更改必须写回磁盘,才能使该缓冲区由其它页重新使用),并使之可由用户进程使用。

lazywriter的触发条件

1. 缓存区内可用空闲缓存块数据不足

2. Windows系统内存压力

区别:

      Checkpoint目的是减少数据库的恢复时间(服务奔溃或重启服务后的恢复),而Lazy writer的目的是保证SQL OS 有空闲缓存块和系统有一定可用内存。

      Checkpoint和LazyWriter都会将缓冲区内脏页写入到磁盘;

      LazyWriter会更新缓存区空闲可用列表,而checkpoint不会;

      Checkpoint操作会被记录到数据库日志中,而lazywriter不会;

      通过指定CheckPoint后的参数,SQL Server会按照这个时间来完成CheckPoint过程,如果时间指定的短,则SQL Server会使用更多的资源优先完成CheckPoint过程。

      通常情况下,将“脏”页写入磁盘的工作,Lazy Writer要做的比CheckPoint会多出许多。

总结

    本文简单介绍了WAL的概念和最终实现数据实际修改的两种方法。介绍了CheckPoint和Lazy Writer,同时对比了两种方法的机制和触发条件,这对我们将来进一步讲解事务日志的基本原理和恢复机制提供了良好的基础。

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

Kotlin Class「T」

fun <T> gotoMainPage( context: Activity, postId: String, mainActivity: Class<T> ) { val intent = Intent(context, ADSplash......

osc_qatrfv06
27分钟前
9
0
小赢科技2020年一季报:由盈转亏1.96亿,M3以下贷款逾期率翻倍达6.71%

来源 | 新金融一线 北京时间6月29日,美股上市互金平台小赢科技公布了今年一季报未经审计的财务业绩报告。财报显示,该公司2020财年第一财季净营收同比下降31.9%至5.29亿元(人民币,下同);...

镭射财经
28分钟前
12
0
kotlin实现单例

/** * 功能:单例实现 */class Singleton private constructor() { companion object { val instance by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { Si......

osc_5nscij7v
28分钟前
11
0
七月算法机器学习 11 决策树、随机森林、 adaboost

目录 主要内容 决策树 信息增益 三种决策树学习算法 决策树的例子 决策树的过拟合 Bootstraping Bagging的策略 随机森林 提升的概念 Adaboost 举例 主要内容 决策树  决策树学习采用的是自...

osc_2718ydlo
29分钟前
10
0
支持千万人次毫秒级交易,360金融的系统性能如何做到?

提到“系统性能”问题,便立即联想到刚刚过去的“618”购物狂欢,电商公司在面对高密集度并发交易行为时,依托强大的系统性能以保持用户在网购与支付过程中平台的系统稳定性的极致案例。系统...

osc_jrhexi1r
30分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部