首页 > 数据库 >Sql Server 加速数据库恢复特性(此部分介绍来源于微软官方文档)

Sql Server 加速数据库恢复特性(此部分介绍来源于微软官方文档)

时间:2023-02-16 10:11:43浏览次数:38  
标签:事务 ADR 数据库 Server 文档 Sql 日志 重做

             加速数据库恢复是sql server 于2019 版本开始引入的一项新特性,简称ADR。

            ADR 的主要优势在于:

  • 快速且一致的数据库恢复

    使用 ADR,长时间运行的事务不会影响整体恢复时间,且无论系统中活动事务的数量或大小如何,都可以实现快速且一致的数据库恢复。

     

  • 即时事务回滚

    使用 ADR,事务回滚是即时的,与事务处于活动状态的时间或已执行的更新次数无关。

     

  • 主动日志截断

    即使存在活动且长时间运行的事务,ADR 也会主动截断事务日志,这可以防止其增长失控。

         如果没有ADR,sql server 恢复模式将遵循分析、重做、撤销3个阶段:

  • 分析阶段

    SQL Server 从上一个成功的检查点(或最早的脏页 LSN)的开头起到末尾,执行事务日志的前向扫描,以确定 SQL Server 停止时每个事务的状态。

     

  • 重做阶段

    SQL Server 从最早的未提交事务起到末尾,执行事务日志的前向扫描,通过重做所有已提交的操作使数据库恢复到崩溃时的状态。

     

  • 撤消阶段

    对于在崩溃时处于活动状态的每个事务,SQL Server 向后遍历日志,从而撤消该事务执行的操作。

         屏幕截图 2023-02-16 094518

          基于次恢复模式设计,sql server数据库从意外中断中恢复所需时间与活动事务运行时间成正比,事务回滚将花费与事务活动相当的时间,此外长时间活动的大事务将导致事务日志不能截断,有消耗尽磁盘空间的风险。

        ADR 通过完全重新设计数据库引擎恢复过程来解决上述问题:

  • 通过避免以最早的活动事务为起始点/结束点扫描日志,使其保持恒定时间/即时状态。 使用 ADR,仅从上一个成功的检查点 [或最早的脏页日志序列号 (LSN)] 处理事务日志。 因此,恢复时间不受长时间运行的事务影响。
  • 由于不再需要为整个事务处理日志,因此可最大程度地减少所需的事务日志空间。 当检查点和备份出现时,可以主动截断事务日志。

       ADR 通过SLOG(系统日志流),加速了事务REDO、UNDO:

        屏幕截图 2023-02-16 100054

  • 分析阶段

    除了为非版本控制操作重建 SLOG(系统日志流)和复制日志记录,此过程与传统恢复模式相同。

     

  • 重做阶段

    分为两个子阶段

    • 子阶段 1

      从 SLOG 重做(从最早的未提交事务到上一个检查点)。 重做是一种快速操作,因为它只需要处理 SLOG 中的一些记录。

       

    • 子阶段 2

      从上一个检查点(而不是最早的未提交事务)起的事务日志重做。

     

  • 撤消阶段

    使用 ADR,撤消阶段几乎即时完成 - 通过使用 SLOG 撤消非版本控制操作以及通过具有逻辑还原的持久版本存储 (PVS) 执行行级别基于版本的撤消。

      启用ADR:

      ALTER DATABASE dbname SET ACCELERATED_DATABASE_RECOVERY = ON;

标签:事务,ADR,数据库,Server,文档,Sql,日志,重做
From: https://www.cnblogs.com/oradba/p/17125745.html

相关文章

  • MySQL 数据库(表字段)命名规范
    一、数据库命名规范采用26个英文字母(区分大小写)和0-9的自然数(一般经常不需要加)加上下划线_组成,命名简洁明确,多个单词用下划线_分隔,一个项目一个数据库,多个项目慎用同一......
  • mysql事务隔离
    前言简单来说,事务就是要保证一组数据库操作,要么全部成功,要么全部失败。在MySQL中,事务支持是在引擎层实现的。你现在知道,MySQL是一个支持多引擎的系统,但并不是所有的引擎都......
  • mysql事务隔离级别及实现原理,深度理解
    1、事务是什么?事务是数据库一个不可分的工作单元,可以将多个操作步骤表示为一个步骤。2、事务的四大特性Atomicity原子性,Consistency一致性,Isolation隔离性,Durability持......
  • 解决mysqlclient安装报缺少Microsoft Visual C++ 14.0 is required
    安装mysqlclient报错error:MicrosoftVisualC++14.0isrequired.Getitwith“MicrosoftVisualC++BuildTools”1.不要去下载VisualStudio!!!==没什么用(对我而言)......
  • 一封传话聚合推送API文档
    前言前面介绍了一封传话聚合推送API的在线测试推送的步骤,可以实现一对一发送消息。需求但是我们希望实现:1.群组订阅功能:例如我和我的好友一起加入通道后,只推送一次我......
  • 2.mysql存储过程、存储函数与触发器
    --创建一个存储过程DELIMITER$CREATEPROCEDURE存储过程名称(返回类型参数名1参数类型1,....)[......]BEGIN--具体组成存储过程的SQL语句....END$DE......
  • SQL注入
    数据库管理系统数据库数据库是存放数据的仓库。它的存储空间很大,可以存放百万条、千万条、上亿条数据。但是数据库并不是随意地将数据进行存放,是有一定的规则的,否则查......
  • 1.mysql创建索引
    --创建一个普通索引(方式①)createindex索引名ON表名(列名(索引键长度)[ASC|DESC]);--创建一个普通索引(方式②)altertable表名addindex索引名(列名(索引键长度)......
  • mysql keepalive +双主架构注意问题
    具体搭建参考Linux两节点+keepalive搭建MySQL双主集群-So怪咖-博客园(cnblogs.com)auto_increment_offset=1#双主复制中,2台服务器的自增长字段初值分别配置为1......
  • kepserver作为ModbusTcp服务器与外围设备通信
    1,通道配置关键参数     2,设备配置关键参数 ......