进阶篇07——InnoDB引擎介绍

概览

逻辑存储结构

架构

当执行增删改查操作时,操作的是缓冲区的数据,如果缓冲区里没有要操作的数据,就会从磁盘中读取数据加载到缓冲区中;缓冲区的数据会以一定的频率通过后台线程刷新到磁盘中永久存储。

内存结构 

 

磁盘结构

后台线程

后台线程的作用就是在合适的时机将内存缓冲池的数据刷新到磁盘文件当中

事务原理

基本概念

redo.log日志

解决事务的持久性

当客户端执行增删改操作时,就会去操作缓冲池中的数据(如果此时缓冲池没有所需要的数据,就会去磁盘文件中加载需要的数据到缓冲池里),然后对相应的数据页进行更改。缓冲池的某些数据页被更改后,和磁盘里存储的数据就不一致了,缓冲池里这些被修改的数据页就称为脏页。在一定的时机里,会通过后台线程将脏页的数据刷新到磁盘中进行永久化存储,但是这个刷新的过程可能会出错,那么更改的数据就会丢失,但在客户端提交事务时,就已经在更改缓冲池的数据之后告知客户端更改完成,这时候就出现了问题。而redo.log就是解决这个问题的。在客户端进行增删改时,会对缓冲池中的数据页进行增删改操作,在操作之后会将更改过的数据页即脏页立即刷新到redo log buffer中,在客户端提交事务之后,立即将redo log buffer中的脏页数据刷新到磁盘中的redo.log日志文件中,这样当后台线程将缓冲池中的数据刷新到磁盘出错时,就可以用redo.log中的数据进行数据恢复

为什么每一次提交事务的时候,要把数据刷新到redo log buffer中,而不是直接将buffer pool中的脏页刷新到磁盘中?这是因为直接将buffer pool中的数据刷新到磁盘中,存在严重的性能问题;在执行增删改操作时,所操作的数据在磁盘中的位置都是随机的,就涉及到了大量的随机磁盘IO,性能就比较低。而redo log buffer通过异步IO将数据刷新到磁盘中的redo.log日志文件中,日志文件都是在文件末尾追加数据的,此时就是顺序磁盘IO,性能就高于随机磁盘IO。

如果脏页中的数据已经顺利的刷新到磁盘中的ibd文件里,此时redo.log中的数据就已经没有用了,因为数据已经存在ibd文件中了,所以每隔一段时间就回去清理redo.log中的数据

undo.log 日志

解决事务的原子性

有两个作用:一是在事务执行失败进行回滚时需要用到undo.log,还有一个用于就是MVCC多版本并发控制 

MVCC 多版本并发控制

基本概念

视频教程: 基本概念

实现原理

记录中的隐藏字段

undo.log 日志

readview

视频教程:readview

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue3 antv/g6 动态设置mode,让节点不可以拖动

1、查看一下官网的设置说明 G6 设置mode 默认模式: const graph new G6.Graph({container: div,width: 500,height: 500,modes: {default: [drag-node,drag-canvas],custom: [drag-canvas]} })默认情况下,我们定义的是default,然后创建节…

JavaWeb——MySQL:DML对表数据的修改

2.DML对表数据的修改 2.1 修改表的数据 (1) 修改单行单列 SQL语句:update 表名 set 列名1数值1 where 列名2数值2; 将sql_student表姓名为吕小布的那行,性别设置为女; (2) 修改单行多列 SQL语句:update 表名 set 列…

Dooprime外汇:如何高效规划家庭理财?从哪里开始?

摘要: 家庭理财是每个家庭都必须面对的重要课题。合理的理财规划不仅能提高家庭的生活质量,还能为未来的生活提供保障。然而,许多人在面对复杂的理财选项和信息时感到无从下手。本文将从不同角度详细分析如何进行高效的家庭理财规划&#xf…

SVN学习(007 svn安装Tortoise工具)

尚硅谷SVN高级教程(svn操作详解) 总时长 4:53:00 共72P 此文章包含第58p-第p72的内容 介绍 安装 选择自己想要装软件的文件夹 进入工作目录,发现无svn的图标,重启电脑即可 就能看到svn的图标 settings功能 进行图标的查看 修改subversion配置文件 …

基于 Redis 实现秒杀资格判断,提升并发性能

在互联网电商平台上,秒杀活动往往会吸引大量用户同时抢购,如何高效地处理高并发请求,保证用户体验,是一个重要的技术挑战。本文将介绍如何基于 Redis 实现秒杀资格的判断,提高并发性能。 基本思路 秒杀活动的核心流程…

Android跨进程调用,Binder线程池溢出导致ANR

Android跨进程调用,Binder线程池溢出导致ANR 如果发生ANR,找到trace.txt 、/data/anr目录下, "main" prio5 tid1 Native| group"main" sCount1 dsCount0 flags1 obj0x72c33e38 self0x78a64c2a00| sysTid1863 nice0 cgr…

任务4.8.4 利用Spark SQL实现分组排行榜

文章目录 1. 任务说明2. 解决思路3. 准备成绩文件4. 采用交互式实现5. 采用Spark项目实战概述:使用Spark SQL实现分组排行榜任务背景任务目标技术选型实现步骤1. 准备数据2. 数据上传至HDFS3. 启动Spark Shell或创建Spark项目4. 读取数据5. 数据转换6. 创建临时视图…

PS系统教程28

Alpha通道(透明通道) 8位的灰度通道,也有256个位置记录图片当中的透明度信息 作用:定义透明、半透明、不透明通道信息。保存、存储选区。 白色不透明区域黑色透明区域灰色半透明区域 案例 为了将我们抠出来的人物方便下次修改…

Opencv学习项目6——pyzbar

在之前我们学习了解码图片中的二维码,这次我们开启摄像头来解码视频中二维码 开启摄像头 # 打开摄像头 cap cv2.VideoCapture(0) cap.set(3, 640) # 设置摄像头画面宽度 cap.set(4, 480) # 设置摄像头画面高度 我使用的是笔记本上的摄像头来进行的,…

CleanMyMac中文版2024官方正式版下载!你的电脑清洁专家!

CleanMyMac中文版,你的电脑清洁专家!✨🧵 你是否曾为电脑的卡顿和垃圾文件而烦恼?别担心,CleanMyMac中文版来帮你解决这些问题!这款神奇的软件不仅可以帮助你清理垃圾文件,还能优化系统性能&…

什么是营销翻译?为什么要使用它?

营销翻译是将营销活动和宣传品翻译成不同语言的过程。它可能涉及翻译您的: 网站营销文案,社交媒体帖子,演示文稿,新闻稿,产品包装,产品说明,海报,宣传册,以及 虽然企业…

商家转账到零钱申请驳回解决方案

商家转账到零钱是什么? 商家转账到零钱,简单说,就是微信支付提供的一个功能,让商家能够方便、快捷、安全地将钱转到用户的微信零钱里。这个功能特别适用于那些需要给用户发红包、退款或者进行其他形式转账的商家。它提供了两种转…

Origin做聚类分析并利用聚类插件绘制热力图

1.聚类分析 1.1 K均值聚类 step1、首先进行归一化,具体步骤如图1-1所示: 图1-1 操作后得到归一化值如图1-2所示: 图1-2 step2、执行K均值聚类分析,如图1-3所示,选中聚类列,接着点击“统计”—“多变量分析…

高级别智能驾驶神级利器:自研OTA系统

在港口无人水平运输场景中,经纬恒润提供了车、路、网、云、图全栈式自研解决方案,包含了自动驾驶车辆、路侧车路协同、全场高可靠定位、5G远程驾驶、运营调度管理、OTA软件升级系统、数字孪生、仿真系统、高精地图等专业模块,组成了一套完整的…

H3C综合实验

实验拓扑 实验要求 1、按照图示配置IP地址 2、sw1和sw2之间的直连链路配置链路聚合 3、 公司内部业务网段为VLAN10和VLAN20; VLAN 10是市场部,vlan20是技术部,要求对VLAN进行命名以便识别;PC1属于vlan10,PC2属于vlan20&#xf…

想远程控制手机,用哪个软件好?

很多人都想知道安卓系统或iOS系统要如何实现手机远程控制手机、电脑远程控制手机,分别需要用到什么软件,这篇文章一次说清楚。 注意,安卓系统需要是7.0及以上版本,iOS系统需要是11及以上版本。具体使用步骤请点击关注,…

10 种最佳编程字体

1.Commit Mono 这是我目前最喜欢的字体。这是我用来输入这篇文章的字体。作者 Eigil Nikolajsen 于 2023 年使用Fira Code和JetBrains Mono作为灵感开发了它。 Commit Mono 清晰易读,可配置性强。您可以根据粗细(我更喜欢最细的 300)、连字、…

开发一款直播APP完整指南

直播是一种强大的营销工具,可以让企业与观众进行真实的互动。 根据Grand View Research发布的预测,直播行业规模将从 2021 年的 700 亿美元增长到 2028 年的近 2240 亿美元,七年内增长三倍。 区块链技术和人工智能等技术进步将在未来几年提…

网页设计的意义何在?最后一个你绝对没想到!

在当今时代,网页已经成为我们日常生活中不可或缺的一部分。网页的支持对于搜索信息、购物、社交娱乐、在线学习和工作至关重要。网页设计作为网页的重要组成部分之一,在实现网页的各种功能和目的方面发挥着至关重要的作用。那么,网页设计的目…

lammps六边形建模方法

大家好,我是小马老师。 本文介绍lammps六边形结构建模方法。 lammps自带的形状有长方体、圆柱体、圆锥体和球体,其他特殊的情况大多需要用组合建模方法。 如下图截面为六边形的纳米线,很难用一条命令建模。 主要原理和之前的锐角刀具建模原理…