InnoDB架构体系

news2024/11/15 12:14:17

2、InnoDB架构体系

InnoDB架构图

image-20221217144809782

2.1、内存结构

2.1.1、buffer pool

InnoDB内存缓存区,使用空间换时间的思想,给数据做了一个缓存。把热点的数据存储在内存中,减少IO次数,提高效率。

show variables like '%innodb_buffer_pool%';

image-20220831143014714

buffer pool 满了,使用LRU算法淘汰数据,剩下的就是热点数据

LRU算法
  • 热区(5/8):效率优化,对于热区前1/4的数据被使用到后,不移动到head位。超出热区数据,则被挤入到冷区。
  • 冷区(3/8)

buffer pool内存回收算法,不同于传统的LRU算法,分为热区、冷区。加载数据先到冷区,默认1s后,在此被使用到,加入到热区。

2.1.2、Change Buffer 写缓冲

Change Buffer是Buffer Pool的一部分,如果这个数据页不是唯一索引,不存在数据重复的情况,那就不需要从磁盘读取数据校验唯一性。这种情况可以先修改内存中缓冲池中的数据记录,从而提高insert、update、delete的效率。5.5版本之前inset buffer,现在也可以处理update、delete操作,所以这块区域 叫做Chang Buffer。

最后将Change Buffer数据记录到磁盘的操作叫做merge

什么时候进行merge操作呢?

  • 数据页被访问
  • 数据库shut down
  • redo log写满
  • 后台线程主动merge

调整change buffer大小,这里只能调整它占用buffer pool的比例,通过下面的参数调整

show variables like '%innodb_change_buffer_max_size%'; # 默认25%

2.1.3、Adaptive Hash Index(自适应索引)

2.1.4、Redo Log Buffer

redo log 不是每一次都写入磁盘,在buffer pool中专门留出一个区域(log buffer)用于缓存,即将要写入日志文件的数据,默认16M。

下面参数控制log buffer写入磁盘的时机:

show variables like '%innodb_flush_log_at_trx_commit%'; # 默认值是1
含义
0 (延迟写)log buffer每秒写一次log file,并且log file的flush操作同时进行。该种事务下,事务提交的时候,不会主动触发写入磁盘的操作。
1 (默认,实时写,实时刷)每次事务提交时,都会把log buffer的数据写入log file,并且刷到磁盘中。
2 (实时写,延迟刷)每次事务提交mysql都会把log buffer的数据写入log file。但是flush操作并不会同时进行。该模式下,mysql会每秒执行一次flush操作。

刷盘越快,越安全,但是也会消耗性能。

innodb_flush_log_at_trx_commit

2.2、磁盘结构

2.2.1、系统表空间 System tablespaces

在默认情况下InnoDB存储引擎有一个共享表空间(对应文件/var/lib/mysql/ibdata1),也叫系统表空间。

InnoDB系统表空间包含InnoBD数据字典和双写缓冲区,Change Buffer 和Undo Logs,如果没有指定file-per-table,也包含用户创建的表和索引数据。

  • 数据字段:由内部系统组成,存储表和索引的元数据(定义信息)
  • 双写缓冲(InnoDB的一大特性)
双写缓冲

InnoBD的页和操作系统的页大小不一致,InnoDB页大小一般为16K,操作系统的页大小为4K,InnoDB的页写入到磁盘时,需要分4次写入。如果在这个4次写磁盘的过程中,出现宕机。这种情况叫做部分写失效,可能导致数据丢失。

开关参数

show variables like 'innodb_doublewrite';

虽然我们可以通过redo log进行数据恢复,但是在这个过程中,如果数据页损坏了,就不能用来恢复数据了。所以在InnoDB数据页进行写入磁盘的时候,留下一个数据页副本,保证可以正常使用redo log恢复数据,这就double write,InnoDB的双写技术。

double write由两部分组成,一部分内存中double write,一部分是磁盘上double write。因为double write是顺序写入的,不会带来很大的开销。

2.2.2、独占表空间 file-per-table tablespaces

可以通过下面开关设置,每个表独占一个表空间。

show variables like 'innodb_file_per_table'; # 默认开启

开启后,每张表都会开辟一个表空间,这个文件就是数据目录下ibd文件,存放表的数据和索引。

2.2.3、通用表空间 general tablespaces

2.2.4、临时表空间 temporary tablespaces

2.2.5、undo表空间 undo log tablespaces

2.3、后台线程

  • master thread:负责刷新缓存数据到磁盘并协调调度其他后台进程。
  • IO thread:分为change bufferlogreadwrite进程。分别用来处理change buffer、重做日志、读写请求的IO回调。
  • purge thread:用来回收undo页。
  • page cleaner thread:用来刷新脏页。

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

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

相关文章

基于polar码和SCMA的多用户检测的联合检测译码matlab仿真,polar采用SCAN软译码,SCMA用MPA算法

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 构造的核心是通过信道极化(channel polarization)处理,在编码侧采用方法使各个子信道呈现出不同的可靠性,当码长持续增加时,部分信道将…

【C语言】初阶习题

目录 1.图案问题 2、时分秒转换 3、打印1-100之间所有3的倍数的数字 4、打印100~200之间的素数 5、给定两个数,求这两个数的最大公约数 6、在屏幕上输出9*9乘法口诀表 7、计算1/1-1/21/3-1/41/5 …… 1/99 - 1/100 的值,打印出结果 8、二分查找 …

说明DBCO-PEG-SH二苯并环辛炔-聚乙二醇-巯基科研试剂材料,DBCO-PEG-SH结构式

结构式 英文:DBCO-PEG-SH,DBCO-PEG-Thiol 中文:二苯并环辛炔-聚乙二醇-巯基 溶剂:溶于水、DMSO等常规有机溶剂 性状:液体/固体白色或淡黄色粉末,取决于分子量 用途范围:广泛应用于医药、生物…

一文搞懂Linux下并制作环形缓冲区

1.环形缓冲区log_buf[]又是存在内核的哪个文件呢? 位于/proc/kmsg里,所以除了dmesg命令查看,也可以使用cat /proc/kmsg来查看 2.但是,dmesg命令和cat /proc/kmsg有所不同 2.1 dmesg命令 每次使用,都会打印出环形缓冲区的所有信息 2.2 cat /proc/kmsg 只会打印…

项目管理中,进度计划是摆设吗?

1、忽视进度计划 项目管理中,有的人认为进度计划是摆设,不重视计划,只是为了满足合同工期,做给客户看,因此草率的编制进度计划。 在通过客户要求后,就将计划搁置在一边,这就导致后期在执行任务…

科班演员陶奕菱亮相海南电影节:人生没有白走的路,每一步都算数

今天的记忆是带着海水的味道………”12月18日,在年末岁尾之际,徽风皖韵熏陶下成长的新生代演员陶奕菱再次来到海南三亚,受邀参加第四届海南岛国际电影节,迫不及待地跑向沙滩面朝大海,感受多姿多彩的魅力三亚。 优雅端…

Java对象内存布局和对象头

对象的内存布局 在HotSpot虚拟机里,对象在堆内存中的存储布局可以划分为三个部分:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)。 对象头 对象头由对象标记Mark W…

进程间通信

进程间通信 进程间通信是不同进程之间的信息传输或交换。在不同的过程中,双方可以访问哪些媒体?进程的用户空间相互独立。一般来说,他们不能互相接触。唯一的例外是共享内存区域。此外,系统空间是一个“公共场所”,所…

【OFDM系列8】对知乎“正交频分复用(OFDM)原理灵魂9问”的理解与通俗易懂回答(慎入,含大量重要公式详细推导的万字长文)

前段时间,在知乎上看到一篇文章: 正交频分复用(OFDM)原理 文中博主提出了关于OFDM的九个问题,看了之后感觉这些问题的确深入OFDM本质,仔细思考可以很好地加深对OFDM这种较为复杂的调制方式的理解,下面谈一谈本人粗浅的一些理解和粗浅的认识,如有不准确或不恰当之处,欢…

电脑里一辈子都不想删的神仙软件

📂目录🎈前言一、浏览器:Chrome新版Edge二、motrix-全能下载器三、压缩软件:WinRAR四、Quicker(更快)五、视频播放器:Potplayer六、listary七、清理工具:Dism八、199it九、PPT排版:iSlide十、 S…

jQuery 动画

文章目录jQuery 动画概述显示和隐藏动画show() 和 hide()toggle()淡入和淡出动画fadeIn() 和 fadeOut()fadeToggle()fadeTo()滑上和滑下动画slideUp()和slideDown()slideToggle()自定义动画简单动画jquery.color.js累积动画回调函数队列动画取消动画延迟动画jQuery 动画 概述 …

程序设计中的耦合类型

一个庞大的系统中,分布着许多子系统,子系统中包含许多包,包中又有数不清的类。自类往上,有数不清的调用关系,一旦两个或多个对象(包括类、包、模块、系统等)之间发生关系(这里我们可…

提升 5-7 倍速,使用 Mac M1 芯片加速 Pytorch 完全指南

2022年5月,PyTorch官方宣布已正式支持在M1芯片版本的Mac上进行模型加速。官方对比数据显示,和CPU相比,M1上炼丹速度平均可加速7倍。 哇哦,不用单独配个GPU也能加速这么多,我迫不及待地搞到一个M1芯片的MacBook后试水了…

CISCO 服务器配置 RAID 指南及安装操作系统

开机后看屏幕出现下图后按 Ctrlm 进入 RAID 配置主页 下图为 RAID 主页. 首先创建一个新的配置. 按SPACE选择要加入的硬盘,然后按F10确定 选择 SPAN-1 选择RAID级别,读写策略... 完成以上步骤后按YES保存配置 选择 Initialize 初始化硬盘 选择YES确定&a…

zabbix添加一个ubuntu受监控主机

ubuntu版本18.04 LTS 安装一个zabbix-agent,命令如下: sudo apt install zabbix-agent 安装成功后编辑zabbix-agent配置文件 vim /etc/zabbix/zabbix_agentd.conf Server: 被动模式访问的zabbix-server的ip ServerActive: 主动模式访问的zabbix-server的ip StartAgent…

实验三 多层神经网络

一、实验目的 (1)学习并掌握常见的机器学习方法; (2)能够结合所学的python知识实现机器学习算法; (3)能够用所学的机器学习算法解决实际问题。 二、实验内容与要求 &#xff08…

Android | Activity 启动流程分析

前言 Activity 类是 android 应用的关键组件,在日常开发中,绝对少不了组件。既然用了这么久,你知道他的启动流程🐴?作为一个应用层开发者,大多数人可能觉得学习这些对日常开发可能没有太大帮助。但是多了解…

P3386 【模板】二分图最大匹配——匈牙利算法

【模板】二分图最大匹配 题目描述 给定一个二分图,其左部点的个数为 nnn,右部点的个数为 mmm,边数为 eee,求其最大匹配的边数。 左部点从 111 至 nnn 编号,右部点从 111 至 mmm 编号。 输入格式 输入的第一行是三…

文件描述符表、文件结构表和文件节点(SylixOS 学习笔记-更新中)

文件描述符表、文件结构表和文件节点 文件描述符表:每个进程都维护着自己的一个文件描述符表,每个文件描述符占其中一。该表记录进程打开的文件相关信息,因文件描述符为进程所有,文件描述符表也为进程内共享;文件表结构…

CDGA|把握三个“着眼点”,实现数据要素治理市场高质量发展

12月19日,国家发改委发文解读《意见》时指出,数据要素安全治理作为数据基础制度的四大组成部分之一,贯穿数据流通交易的各个环节,涉及数据要素市场培育的方方面面,发挥着不可替代的重要作用既有利于保障国家数据安全&a…