zoukankan      html  css  js  c++  java
  • sqlserver内存管理之lazy writer

      任何在缓冲区被修改的页都会被标记为“脏”页。将这个脏页写入到数据磁盘就是CheckPoint或者Lazy Writer的工作.前面就大体说了一下checkpoint,这会就简单的理解一下这个lazy writer.

        Lazy Writer存在的目的是对缓冲区进行管理。当缓冲区达到某一临界值时,Lazy Writer会将缓冲区内的脏页存入磁盘文件中,而将未修改的页释放并回收资源。
    我们知道,当执行一条语句的时候
    比如:
    begin  tran
            insert  into table_name(age)  values(1111)
    commit  
    --rollback

    暂且分析一下语句的执行过程

    1:begin train写入缓冲区的日志
    2:缓冲区日志写入操作
    3:将数据插入到缓冲区修改页
    4:缓冲区日志写入commit
    5:提交到事务日志
    当commit提交事物的时候,sqlserver的预写机制是先将操作写入事务日志(上一篇文章关于这块还是写的有错的,因为事务日志是commit的时候提交到日志文件的,所以说缓冲区是不存在事务日志的操作的,也就是说checkpoint和lazy writer发生的时候,只会将脏页写入到MDF文件当中)
    下面搬一张宋大神的图来看一下,稍作修改,很直观:
     
    4:sqlserver内存管理之lazy <wbr>writer
    下面主要列举一下检查点和懒惰写之间的差别,其实这些差别已经是众所周知了,但是我们还是列举一下两者之间的区别供大家学习一下:
    Checkpoint和lazyWriter都会将缓冲区内脏页写入到磁盘;
    lazywriter会更新缓存区空闲可用列表,而checkpoint不会;
    checkpoint操作会被记录到数据库日志中,而lazywriter不会;
    lazywriter是内存达到一个临界值的时候自动发生,确保缓存的使用,而检查点则不关心缓存用了多少,而是自动发生.
  • 相关阅读:
    python 线程通信 生产者与消费者
    python 死锁
    python 线程锁
    python 进程间通信 Queue
    python 进程 Queue
    python 阻塞模式 进程池
    python 非阻塞模式 进程池
    Django在根据models生成数据库表时报 __init__() missing 1 required positional argument: 'on_delete'
    rest_framework序列化
    python3与django中@property详解
  • 原文地址:https://www.cnblogs.com/shengdimaya/p/5403931.html
Copyright © 2011-2022 走看看