BufferPool缓存机制

news2025/7/23 8:13:25

BufferPool缓存机制

1、更新数据流程

  • 流程图
    在这里插入图片描述
  • sql更新数据刷到磁盘前会经过serve层
    • 连接器-管理连接和权限校验
    • 优化器-语法词法分析
    • 优化器-执行计划生成索引选择
    • 执行器-连接bufferPool

1.1 流程步骤

  1. 从磁盘加载数据到buffer pool,会先去判断要更新的数据所在数据页是否已经被加载到了,如果已经被加载到了buffer pool中的数据页就直接使用
  2. 写入数据的旧值到undo log日志中
    • 如果事务提交失败要回滚数据,可以用undo日志里的数据恢复buffer pool里的缓存数据
  3. 更新buffer pool数据页中内存数据
  4. 写入内存中的redo log,这个时候还没写入磁盘中,记录对那个表那条记录做了什么操作
  5. 预提交事务,将内存的redo log写入磁盘中的redo log日志,用于崩溃恢复
  6. 提交事务之前,还要在内存中写binlog日志,提交事务时写入磁盘文件
  7. 写入commit标记至redo日志文件里提交事务完成,该标记为了保证事务提交后redo与binlog数据一至
  8. IO随机写入磁盘以paqe为单位写入

1.2 binlog日志

redo log一种偏向物理性质的重做日志,因为他里面记录的是类似这样的东西,“对哪个数据页中的什么记录,做了个什么修改”。而且redo log本身是属于InnoDB存储引擎特有的一个东西。而binlog叫做归档日志,他里面记录的是偏向于逻辑性的日志,类似于“对表中的id=1的一行数据做了更新操作,更新以后的值是什么”。binlog不是InnoDB存储引擎特有的日志文件,是属于mysql server自己的日志文件。

在更新数据时,我们知道会写undo log、redo log日志,同时还会写binlog日志,和redo log日志一样,先是写在内存中,提交事务时,才会写入磁盘。对于binlog刷盘其实有不同的策略,可以通过sync_binlog参数进行配置,默认为0,查看命令:

show variables like 'sync_binlog';

sync_binlog=0时,先将binlog写入内存中,还不是写入磁盘文件,之后线程写入磁盘。写入磁盘前mysql宕机日志会丢失,不安全。

sync_binlog=1时,在提交事务会强制将binlog写入磁盘,日志不会丢失

保证数据的完整性

  1. 在更新完buffer pool中数据页,mysql崩溃宕机了,此时已经写了undo log日志,相当于事务没有完成,回滚数据,那么重启系统数据还是之前完整的数据
  2. 在写入redo log、binlog过程中,mysql宕机,相当于事务没有提交完成,此时视为回滚事务,重启mysql执行undo log即可恢复到原来数据
  3. 如果事务提交成功,buffer pool里的数据还没来得及写入磁盘,此时系统宕机了,可以用redo日志里的数据恢复buffer pool里的缓存数据
  4. binlog刷盘参数sync_binlog配置为1,在提交事务会强制将binlog写入磁盘,日志不会丢失,binlog刷盘参数sync_binlog配置为0,随机写入磁盘,以paqe为单位写入

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

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

相关文章

Hantek6022BE 虚拟示波器

​ 0. Hantek 厂家提供的介绍 安装方法按照说明来。 很多人都说原厂的软件不好用,于是折腾就开始了: 1. VIRTINS Multi-Instrument 这个别人已经写的很详细了 大概需要准备 Multi-Ins 这软件,目前找到 3.7 的合用 菜单里 添加设备到库&a…

HTML+CSS详细知识点复习(上)

文章目录一、初识HTML1、标签概述二、初识CSS1、CSS核心基础2、设置文本样式3、高级特性4、CSS的优先级三、CSS选择器1、关系选择器四、盒子模型1、边框属性2、边距属性3、背景属性4、盒子的宽与高5、CSS3新增盒子模型属性一、初识HTML HTML(超文本标记语言&#x…

用Python采集世界杯球队热搜数据 并发送邮箱通知

前言 嗨嗨,最近世界杯的热度可是一直在增长啊 待会就是 卡塔尔和塞内加尔打了 怎么说 还是有点期待结果的 趁现在有点无聊 就想着用Python采集世界杯球队热搜数据 顺便 发送邮箱通知 话不多说,马上开始 知识点 动态数据抓包requests发送请求json数据…

【Proteus仿真】【51单片机】智能雨刷器设计

文章目录一、主要功能二、硬件资源三、软件设计四、实验现象联系作者一、主要功能 本项目使用Proteus8仿真51单片机控制器,使用LCD1602液晶模块、按键模块、雨滴传感器、ADC、LED模块等。 主要功能: 系统运行后,LCD1602显示雨刷器当前模式、…

如何制定测试团队度量体系

1、前言 每当月底或一个季度结束,公司或项目都会进行考核指标的统计,来总结每个组员在这个阶段的工作产出与绩效成绩。 那么制定哪些指标最为标准,最为专业,同时针对整个项目组都是公平的,这个就需要每个公司或项目根…

Python入门

目录 一、Python安装及环境搭建 二、Python运用(数据类型) 基本数据类型 引用数据类型 一、Python安装及环境搭建 Python环境安装包下载 https://www.python.org/ https://www.python.org/downloads/windows/ Python开发工具PyCharm下载 https://www.…

南卡和FIIL 哪个更好用?南卡和FIIL CC nano蓝牙耳机对比测评

作为一个狂热的蓝牙爱好者,我也用了不少蓝牙耳机了,真的是对蓝牙耳机爱不释手。自从蓝牙耳机出现以来,我们都看到了它的迅速发展,尤其是这两年,蓝牙耳机越来越受欢迎,已经取代了传统的有线耳机,…

1-10嵌入式Linux系统开发与应用|嵌入式Linux|第三章 Linux编程环境

目录 1.掌握Linux常用的基本命令功能、语法结构和用法示例 1.1linux编程环境 1.1.1系统平台环境 linux平台特性 1.1.2开发工具环境 1.1.3基于文模式的开发平台 1.1.4集成开发平台EclipseCDT 1.1.5文档帮助环境 1.2常用编辑器 1.2.1VIM编辑器 1.VIM的模式 2.VIM的启…

爆冷?黑马?这次用python来给你推测一波.....

人生苦短 我用python 在刚刚结束的2022年卡塔尔世界杯E组第一轮一场比赛中, 德国队爆冷1:2不敌日本队。 上半场,日本队门将权田修一出击扑倒劳姆送点, 京多安主罚命中先拔头筹; 下半场,堂安律门前补射为日本队扳平…

如何裁剪视频画面?快来看看这个详细教程

有什么简单的方法可以裁剪视频?现在有很多小伙伴都会在社交平台上发布自己的视频内容,分享自己的日常,那在编辑视频的时候肯定是会对视频内容进行剪切的,那么怎么裁剪视频呢?有哪些简单的方法可以裁剪视频呢&#xff1…

Selenium基础 — TMLTestRunner测试报告

目录 1、HTMLTestRunner介绍 2、HTMLTestRunner的使用 3、测试报告示例 4、封装成模块 1、学习思路和方法 2、想学习却无从下手,该如何学习? 3、软件测试/自动化测试【全家桶装】学习中的工具、安装包、插件.... 4、有了安装包和学习资料&#x…

javaweb JAVA JSP零食销售系统购物系统ssm购物系统购物商城系统源码(ssm电子商务系统)网上零食在线销售

JSP零食销售系统购物系统ssm购物系统购物商城系统源码(ssm电子商务系统)网上零食在线销售

[网络工程师]-应用层协议-DNS

域名系统(Domain Name System,DNS)是把主机域名解析成IP地址的系统,解决了IP地址难记的问题。该系统由解析器和域名服务器组成。DNS主要基于UDP协议,较少情况下使用TCP协议,端口号均为53。域名系统由三部分组成&#x…

解决Mybatis-Plus或PageHelper多表分页查询总条数不对问题

Mybatis-Plus版本3.4之后,对分页查询进行了优化 对于单表查询是没有问题的。而需要多表关联查询(自写sql)时,就会查询调用Mybatis-Plus的 .page(E page, Wrapper queryWrapper); 方法是就就会出现查询总数不对问题。 业务需要查…

[论文评析]MediaPipe Hands: On-device Real-time Hand Tracking, ArXiv,2020

MediaPipe Hands: On-device Real-time Hand Tracking论文信息简介Mediapipe Hands手掌检测器BlazePalm Detector手部骨骼检测Hand Landmark Model数据集构造应用References论文信息 论文题目:MediaPipe Hands: On-device Real-time Hand Tracking 发表&#xff1a…

STM32 IAP相关的FLASH数据读取和跳转

IAP操作一、STM32 FLASH 分区二、BootLoader程序三、UserAPP程序四、Flash数据的读取五、BootLoader到UserAPP的跳转一、STM32 FLASH 分区 以STM32G484RE举例,固件烧录到FLASH的起始地址进行保存,理论上可烧录的最大文件为512Kb,实际项目中固…

动态域名解析

众所周知,如果计算机想参与互联网通讯,无论是作为一台执行资源访问的客户端还是作为一台被访问的资源提供服务器,计算机必须分配一个合法的IP地址。这个地址通常由互联网服务商提供(在中国通常是电信部门) 这种IP地址…

2.JDBC必知必会

文章目录2.0 JDBC2.1 配置单数据源项目一:尝试Spring Boot自动装配数据源创建查看应用程序有哪些bean原理问题项目二:SpringMVC手动配置数据源Spring Boot自动装配原理与数据源相关配置项目三:尝试Spring Boot自动装配参数配置2.2.配置多数据…

基于自适应Sigmoid型函数的内镜图像增强与空间变颜色再现方法

论文题目:Image Enhancement and Space-variant Color Reproduction Method for Endoscopic Images using Adaptive Sigmoid Function 1 摘要 首先,使用YCCBR转换矩阵,将彩色图像分为亮度分量和色度分量,对均匀分布的亮度像素应…

论文笔记:PTR: Prompt Tuning with Rules for Text Classification

Abstract 手动设计大量语言提示麻烦且易出错,而自动生成的提示,在非小样本场景下验证其有效性昂贵且耗时。因此,提示调优以处理多类别分类任务仍然具有挑战。为此,本文提出使用规则进行多类别文本分类提示调优(PTR&…