gbase8s数据库阻塞检查点和非阻塞检查点的执行机制

news2024/7/6 19:31:21

1. 检查点的描述

  • 为了便于数据库系统的复原和逻辑恢复,数据库服务器生成的一致性标志点,称为检查点,其是建立在数据库系统的已知和一致状态时日志中的某个时间点
  • 检查点的目的在于定期将逻辑日志中的重新启动点向前移动
    • 如果存在检查点,数据库只需要完成检查点之后的逻辑日志的恢复即可完成数据库的重启和恢复
    • 如果不存在检查点,则需要重新读取自数据库重启以来的所有逻辑日志才可完成数据库的重启和恢复
    • 数据库服务为为逻辑日志空间的每个范围生成至少一个自动检查点,保证可以开始快速恢复的检查点存在
  • 检查点在infomix9.2版本中增加了fuzzy checkpoint的概念
    • 检查点分为full checkpoint和fuzzy checkpoint两种
    • full checkpoint会把所有的脏页刷新到磁盘
    • fuzzy checkpoint不会刷新所有页
    • 在informix11.5版本中又取消了fuzzy checkpoint
  • 逻辑日志是循环的,数据库保证在每个循环周期内,数据库保证至少做一次checkpoint,当下一个日志包含最后的checkpoint时(代表次周期只做了一次检查点),数据库会做一次检查点操作

2. 检查点的作用

  • 数据从磁盘读取到缓冲池中后被修改后,内存中的数据和缓冲池中的数据会出现差异,检查点会将共享内存缓冲池中的脏页数据全部刷新到磁盘上,使所修改的数据固化到硬盘上
  • 检查点除了刷新数据到磁盘,还起到了有助恢复的作用,数据库down机恢复时,会找到最后一个检查点的位置,然后动态恢复检查点之后的逻辑日志,如果没有检查点,需要恢复所有的逻辑日志,需要的时间会较长

3. 检查点针对的数据

  • checkpoint时,内存中的LRU队列会存在两种数据
    • 一种是从磁盘读出来没有发生更改的数据,FLRU队列
    • 一种是从磁盘读出来后发生了更改的数据,MLRU队列
  • 检查点刷新的数据只针对MLRU队列的数据,即只需要将内存中修改的数据同步到磁盘,而不需要将所有的信息写到磁盘,如果只有一个page脏页,则只同步一个page页到磁盘,其他page不需要
  • 写磁盘的脏页数据虽然同步到了磁盘,但是仍然在内存中存在

4. 检查点的种类

  • 阻塞检查点
    • 改检查点操作时会加上数据库级别的锁,他是一个完全检查点,必须保证事务的一致性
  • 非阻塞检查点
    • 模糊检查点,这些检查点的频率可以通过应用程序进行调整
    • 非阻塞检查点,不需要数据库级别的锁,因此在检查点正在进行时,多个应用程序可以在同一个数据库上异步提交或回滚事务,他是一个不完全检查点不必保证事务的一致性
    • 非阻塞检查点不是说全部过程都不阻塞,其是会存在一段阻塞的过程:检查点执行之前,需要在阻塞状态下等待用户离开critical section,然后将系统恢复需要的逻辑日志、物理日志等刷新,此阶段为阻塞阶段

5. 阻塞的种类

事件

描述

是否阻塞

管理类

1.dbspace的创建、删除和改名

阻塞

2.增加或删除chunk

3.增加或删除一个逻辑日志文件

4.修改物理日志的位置和大小

5.在不记日志的分区上执行shrink(碎片整理)操作

6.打开或关闭镜像

备份

假备份

阻塞

开始归档时

物理恢复结束之后

CDR(数据库同步程序)

第一次启动ER的子系统或者所有参与者被删除之后重启了复制

阻塞

升级转换/升级回退

在检查转换结束和真正的磁盘结构转换开始之前会执行一次checkpoint;如果升级失败,回退成功之后会执行一次checkpoint

阻塞

高可用性

1.增加一个新的RSS或者SDS系节点

1.secondary server被升级为主服务器

根据场景进行区分

HDR

1.服务器的模式发生了变化

2.HDR安装结束之后的第一次传输

3.primary或secondary servers上潜在的物理日志溢出

情景不同,结果不同

恢复点

恢复开始和结束之后都会执行checkpoint,当设置了CONVERSION_GUARD,并且指定了RESTORE_POINT_DIR配置参数时,恢复点才会生效

阻塞

Pload

以快速模式启动Pload(HPL)

阻塞

恢复

快速恢复开始时

阻塞

重组

在线创建索引

碎片整理

阻塞

用户操作

用户执行checkpoint

阻塞(除外部备份期间)

事件

描述

是否阻塞

CKPTINTVL

当CKPTINTVL间隔时间到了之后,数据库会检查是否需要做checkpoint,满足下列条件,需要做:

  • 当MLRU队列中的缓冲页达到了BUFFERPOOL中定义的lru_max_dirty参数后
  • 清页线索过于繁忙。即一个用户需要获得一个可用的缓冲页,但是所有的缓冲页的指针都在MLRU内

不阻塞

LongTX

长事务:发现长事务,且事务没有停止,会执行一个checkpoint来停止这个长事务

回滚过程中,如果长事务被终止,当长事务仍然没有回滚结束,此时执行一个checkpoint

不阻塞

Llog

逻辑日志用完

不阻塞

Misc

因IO错误导致dbspace或chunk处于PD状态

不阻塞

物理日志

物理日志所处条件:

1.物理日志写到75%

2.物理日志加上脏页的容量大于物理日志总空间的90%

不阻塞

RTO

定义最长的数据恢复时间,正常操作系统崩溃,重启的时间不会超过TRO_SERVER_RESTART配置的时间

不阻塞

stamp wrap

如果新的检查点时间戳在最后一个检查点之前,会触发另外一个检查点

不阻塞

startup

数据库穷的那个

不阻塞

解压

在不及日志的表或者数据库上执行解压操作

不阻塞

6. 检查点的场景

  • 阻塞检查点:数据库空间添加到服务器或执行数据库备份时,检查点将出现
  • 非阻塞检查点:资源限制发生时,如逻辑日志空间的每个范围需要检查点来保证日志具有快速开始恢复的检查点;如数据库服务器将在物理日志达到总大小的75%时触发检查点,以避免物理日志移除,这种检查点不会阻塞事务
    • 如果检查点期间,资源将要耗尽,则会为了保证有足够的资源保证检查点的完成,则会阻塞其他事务
    • 如果事务被阻塞,则服务器会更频繁的触发检查点,以避免检查点处理期间的事务阻塞
    • 自动检查点引起数据库更频繁的触发检查点,以避免事务阻塞,自动检查点尝试监视系统活动和资源使用情况(物理和逻辑日志使用情况以及缓冲池脏的程度),以能够及时触发检查点,这样检查点的处理就可在物理日志或逻辑日志耗尽前完成、3

7. 检查点的参数

  • auto_ckpts:配置参数设置启动时启用或禁用自动检查点
  • RTO_SERVER_RESTART:配置参数可指定快速恢复需要的时间
    • 配置此参数将忽略参数CKPTINTVL
    • 此参数配置后,数据库服务器将会监视物理日志和逻辑日志使用情况,以估计快速恢复的持续时间。如果服务器估计快速恢复将超出RTO_SERVER_RESTART时间,将会触发检查点
    • RTO_SERVER_RESTART指定的是目标时间量,不能是保证的时间量

8. 检查点的执行过程

  • 第一步:检查点执行开始时关于用户线索的要求:
    • 检查点发生时,会检查所有数据库线索的状态,而此时数据库线索(用户执行sql的进程)的状态可以分为三种:将要执行、执行中和执行结束
    • 针对执行中的线索,根据其执行过程的节点位置将会划分出检查点执行的两种行为,而针对线索的某部分节点我们称之为关键部分代码,根据线索是否进入到关键部分代码,检查点的两种行为如下:
      • 线索还没有进入关键代码部分的执行,此时检查点可以阻塞线程的后续执行
      • 如果线索执行节点进入了关键部分代码,则检查点需要等待线索执行完成后再进行检查点
    • 关键部分代码的描述
      • 关键部分的代码主要是做磁盘的更新,为了保证数据物理的一致性,所以针对这部分要么全部完成,要么全部不完成
      • 关键部分的线索会持有完成数据修改所需要的共享内存资源,而针对这部分资源,做checkpoint操作时,必须获得这部分共享内存资源,所以检查点执行时要求关键部分代码中没有用户线索在执行
    • checkpoint会等待所有进入关键部分代码的用户线索执行完毕释放资源会,才会继续执行,将缓冲池的数据同步到磁盘
  • 第二步:将物理日志缓冲刷新到物理日志文件
    • 当没有用户线索处于关键部分代码中,检查点将继续执行
    • 清页线索会把物理日志缓冲中的信息刷新到物理日志文件中

  • 第三步:将缓冲池中的所有脏页写入到磁盘,这一步被称之为chunk write,仅需要刷新脏页,不需要刷新所有页
  • 第四步:将检查点的信息写入到几个关键文件中
    • 清页线索会在逻辑日志中写一个checkpoint记录,他提供了一个系统失败之后的一个恢复点
    • 清页线索还会在rootdbs的保留页中(page_1CKPT和page_2CKPT)进行更新状态
    • 将checkpoint完成的记录写到消息日志文件中

  • 第五步:将逻辑日志缓冲区的内容刷新到逻辑日志文件中
  • 第六步:逻辑上将物理日志文件清空
    • 物理日志主要是数据库异常崩溃恢复时,可以在此基础上进行恢复,防止块断裂问题,所以检查点完成后,之前的物理日志已经失效了
    • 对于已经失效的物理日志,gbase8s采用的是逻辑删除:即checkpoint记录写到消息日志文件后,物理日志上的文件不会被移走(移动删除开销较大)。而是以在物理日志后面的地址作为新一轮物理日志的写入的开始地址,继续往后写,而物理日志使用完毕后,将会从物理日志文件开头进行覆盖写
    • 可以把物理日志文件看成循环文件,没有起始点,没有结束点,每次checkpoint,物理日志的起始点都在变化

9. 非阻塞检查点的特殊说明

  • 检查点分为阻塞检查点和非阻塞检查点,非阻塞检查点并不是完全不阻塞,其也会出现一部分阻塞时间,只是时间相比较会非常短暂
  • 步骤如下:
    • 检查点开始执行时,会阻塞新的线索进入到关键代码区域,等待进入到关键部分代码的线索离开
    • 将缓存中的系统目录表信息写入到磁盘中
    • 将物理、逻辑日志缓冲区刷新到日志文件中
    • 将检查点写入到逻辑日志和消息日志文件中
    • 完成上述步骤后,将不再阻塞新的线索进入到关键代码部分
    • 将缓冲区中的脏页写入到磁盘中
    • 结束检查点操作,在保留页中更新检查点记录,检查点完成
  • 从上可知非阻塞检查点将会存在一段阻塞时间

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1827272.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Quartus 13.0】NIOS II 部署UART 和 PWM

打算在 EP1C3T144I7 芯片上部署 nios ii 做 uart & pwm控制 这个芯片或许不够做 QT 部署 这个芯片好老啊,但是做控制足够了,我只是想装13写 leader给的接口代码是用VHDL写的,我不会 当然verilog我也不太会 就这样,随便写吧 co…

[大模型]XVERSE-7B-chat Transformers 推理

XVERSE-7B-Chat为XVERSE-7B模型对齐后的版本。 XVERSE-7B 是由深圳元象科技自主研发的支持多语言的大语言模型(Large Language Model),参数规模为 70 亿,主要特点如下: 模型结构:XVERSE-7B 使用主流 Deco…

【ARMv8/ARMv9 硬件加速系列 3.2 -- SVE 读写内存指令 st1b | st1w | st1w | st1d 使用介绍】

文章目录 SVE Load 和 Store 指令使用介绍LD1 加载指令ST1 存储指令PFR 预取指令参考示例LD1 加载示例ST1 存储示例 代码实例 SVE Load 和 Store 指令使用介绍 ARMv9架构中的SVE(Scalable Vector Extension)指令集为向量计算提供了强大支持,…

fs.1.10 ON rockeylinux8 dockerfile模式

概述 freeswitch是一款简单好用的VOIP开源软交换平台。 rockeylinux8 docker上编译安装fs.1.10的流程记录,本文使用dockerfile模式。 环境 docker engine:Version 24.0.6 rockylinux docker:8 freeswitch:v1.10.7 dockerfi…

CleanMyMacX4.15.4如何优化苹果电脑系统缓存,告别MacBook卡顿,提升mac电脑性能

你是否曾为苹果电脑存储空间不够而烦恼?是否曾因系统运行缓慢而苦恼?别担心,今天我要给大家种草一个神器——CleanMyMac!这款软件可以帮助你轻松解决苹果电脑的种种问题,让你的电脑焕然一新! 让我来给大家介…

显著提高iOS应用中Web页面的加载速度 - 提前下载页面的关键资源(如JavaScript、CSS和图像)

手动下载并缓存资源是一种有效的方式,可以确保在需要时资源已经在本地存储,这样可以显著提高加载速度。 缓存整个 web 页面的所有资源文件 具体实现步骤 下载和缓存资源:包括 HTML 文件、CSS、JavaScript 和图像。在应用启动时预加载资源。…

CSS从入门到精通——动画:CSS3动画执行次数和逆向播放

目录 任务描述 相关知识 动画执行次数 动画反向播放 编程要求 任务描述 本关任务:用 CSS3 实现loading效果。效果图如下: 相关知识 为了完成本关任务,你需要掌握:1.动画执行次数,2.动画反向播放。 需要实现的效…

CSS从入门到精通——动画:CSS3动画延迟和完成后状态的保持

目录 任务描述 相关知识 动画状态 动画完成时的状态 动画延迟 编程要求 任务描述 本关任务:用 CSS3 实现小车等待红绿灯的效果。效果图如下: 相关知识 为了完成本关任务,你需要掌握:1.动画状态,2.动画完成时的状…

mac下Xcode在iphone真机上测试运行iOS软件

最近一个需求需要在iPhone真机上测试一个视频直播的项目。 需要解决如何将项目 app 安装到真机上 在进行真机调试。 安装Xcode 直接在App Store上搜索Xcode安装即可。 关键是要安装Simulator。项目需要安装iOS17.5但是由于安装包太大,并且网络不稳定的原因。在Xco…

关于yolov5训练的那些事儿

1.YOLOv5 的模型系列包括从最小到最大的多种模型:YOLOv5n(Nano),YOLOv5s(Small),YOLOv5m(Medium),YOLOv5l(Large),以及 YO…

【Linux硬盘读取】Windows下读取Linux系统的文件解决方案:Linux Reader4.5 By DiskInternals

前言 相信做机器视觉相关的很多人都会安装 Windows 和 Linux 双系统。在 Linux 下,我们可以很方便的访问Windows的磁盘,反过来却不行。但是这又是必须的。通过亲身体验,向大家推荐这么一个工具,可以让 Windows 方便的访问 Ext 2/3…

Linux 文件的权限信息解读 chmod修改权限 数字序号表示权限

ls -l #列出当前文件 显示详细信息 drwxr-xr-x. 2 dpc test 6 Jun 15 07:45 test.txt共分为三部分 drwxr-xr-x.:表示文件和文件夹的权限信息dpc :文件,文件夹所属的用户test : 文件和文件夹所属的用户组 drwxr-xr-x 解读 d表示为…

实用软件下载:BetterZip 5最新安装包及详细安装教程

BetterZip是一款功能强大的Mac解/压缩软件,可以满足用户对文件压缩、解压、加密和保护等方面的需求。以下是关于BetterZip软件的主要功能、特点和使用方法的详细介绍,以及对其用户友好度、稳定性和安全性的评价。 安 装 包 获 取 地 址: BetterZip 5-安…

【尚庭公寓SpringBoot + Vue 项目实战】公寓管理(十一)

【尚庭公寓SpringBoot Vue 项目实战】公寓管理(十一) 文章目录 【尚庭公寓SpringBoot Vue 项目实战】公寓管理(十一)1、业务介绍2、逻辑模型介绍3、接口开发3.1、保存或更新公寓信息3.2、根据条件分页查询详细信息3.3、根据ID获…

深度学习(七)——神经网络的卷积操作

卷积操作 一、torch.nn中Convolution Layers函数的介绍 1. 参数介绍 nn.Conv1d: Conv取自Convolution的前四个字母,1d代表的是一个一维操作。 nn.Conv2d: 2d表示是一个二维的操作,比如图像就是一个二维的。 其余参数不常用,见官网文档&am…

分布式事务AP控制方案(下)

分布式事务控制方案 本篇文章给出一种要求高可用性(AP思想)的分布式事务控制方案 上篇回顾:点我查看 分布式事务控制方案1、前景回顾2、数据库和缓存的操作3、分布式文件系统1)页面静态化2)远程调用3)调用…

adb卸载系统应用

1.进入shell adb shell2.查看所有包 pm list packages3.查找包 如查找vivo相关的包 pm list packages | grep vivo发现包太多了,根本不知道哪个是我们想卸载的应用 于是可以打开某应用,再查看当前运行应用的包名 如下: 4.查找当前前台运行的包名 打开某应用,在亮屏状态输入 …

卫星通讯助力船舶可视化监控:EasyCVR视频汇聚系统新应用

一、背景 随着科技的不断进步和社会治安的日益严峻,视频监控系统已经成为维护公共安全和提升管理效率的重要工具。传统的视频监控主要依赖于有线传输,但受到地域限制、布线成本高等因素的影响,其应用范围和效果受到一定限制。而卫星通讯传输…

学会python——显示进度条(python实例五)

目录 1、认识Python 2、环境与工具 2.1 python环境 2.2 Visual Studio Code编译 3、进度条显示 3.1 代码构思 3.2 代码示例 3.3 运行结果 4、总结 1、认识Python Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计具有很强的可读…

ComfyUI中使用 SD3 模型(附模型下载详细说明)

文章目录 背景安装方式一方式二 测试 背景 StabilityAI近日开源了Stable Diffusion 3 Medium,简称 SD3,该模型拥有着20亿参数。其特点如下: 提升了整体图片的质量、真实感提供了三种文本编码器可组合使用,有助于在性能和效率之间…