• checkpoint(sqlserver数据库检查点)


    关于检查点的解释:

     
    出于性能方面的考虑,数据库引擎对内存(缓冲区缓存)中的数据库页进行修改,但在每次更改后不将这些页写入磁盘。相反,数据库引擎定期发出对每个数据库的检查点命令。“检查点”将当前内存中已修改的页(称为“脏页”)和事务日志信息从内存写入磁盘,并记录有关事务日志的信息。
    数据库引擎支持几种类型的检查点:自动、间接、手动和内部。下表总结了检查点类型。
    1:自动
    3:sqlserver数据库检查点
    数据库实例级别检查点设置为0标识检查点将会自动发生
    2:手动设置后就会间接发生
    3:sqlserver数据库检查点

    上图将检查点设置为2分钟发生一次,两分钟将会自动执行检查点.
    3:手动
    3:sqlserver数据库检查点
    后面的单位是秒,多少秒内自动尝试发生检查点.
    4:内部:由各种服务器操作(如备份和数据库快照创建)发出,以确保磁盘映像与日志的当前状态匹配。
    A:已经使用 ALTER DATABASE 添加或删除了数据库文件。
    进行了数据库备份。
    B:创建了数据库快照,不管 DBCC CHECK 是显式还是内部执行。
    C:执行了需要关闭数据库的活动。例如,AUTO_CLOSE 设置为 ON 并且关闭了数据库的最后一个用户连接,或者执行了需要重新启动数据库的数据库选项更改。
    D:通过停止 SQL Server (MSSQLSERVER) 服务停止了 SQL Server 实例。任一操作都会在 SQL Server 实例的每个数据库中生成一个检查点。
    E:使 SQL Server 故障转移群集实例 (FCI) 脱机
    当发生以上操作的时候,数据库检查点将会自动发生.
     
     
    我们可以想象,当检查点频繁发生的时候,就会造成IO的读写频繁,这样不但不能够提高效率,相反还会降低,而且还会影响磁盘的寿命.所以检查点的机制还是很有作用的.
    当检查点发生的时候,他会对sqlserver的缓冲区的所有脏页进行处理,写入磁盘文件,当然有一些修改的事物是没有commit的,但是还是会被写入到数据文件当中,发生IO写,所以说,这个机制其实就是把脏数据写入磁盘,而不管你的数据是有没有提交.未提交的数据就在后期会做UNDO将事物回滚,
     
     
  • 相关阅读:
    Umbraco建站指南[0]:前言
    项目开发中一些不得其解的问题
    Maven Install 的傻问题
    html5 audio/video 操作
    CentOS7.3安装MySQL5.7
    Maven将独立jar包安装到本地库
    MyBatis 中 foreach 语句处理 List<Integer>类型
    站内信系统的设计思路
    Spring+MyBatis项目开发代码步骤
    webpack 配置eslint-standard
  • 原文地址:https://www.cnblogs.com/shengdimaya/p/5403928.html
Copyright © 2020-2023  润新知