mysql数据库innodb体系结构(一、内存结构 与二、物理存储结构)

news2024/11/24 19:55:12

文章目录

  • InnoDB存储引擎结构图
  • innoDB体系结构
    • 一、内存结构
      • 1.Buffer Pool
      • 2.Change Pool
      • 3.Log Buffer
    • 二、物理存储结构
      • 1.系统表空间
      • 2.独立表空间
      • 3.Redo日志
          • 1、redo 日志
      • 4.Undo日志
          • 1、undo 日志
    • ```回滚段中的UNDO日志分为两种:```
    • ```UNDO 日志存储结构```


InnoDB存储引擎结构图

在这里插入图片描述

innoDB体系结构

在这里插入图片描述

一、内存结构

在这里插入图片描述

1.Buffer Pool

InnoDB专用缓存,用来缓存表对象的数据和索引信息的。

Buffer PoolInnoDB Dedicated cache used to cache table object data and index information.
大小由innodb_buffer_pool_size变量指定,默认为128MB。

The size is specified by the innodb_buffer_pool_size variable, which defaults to 128MB.
在独立的数据库服务器中,该缓存大小可以设置为物理内存的80%。
In a standalone database server, this cache size can be set to 80% of physical memory.

2.Change Pool

在这里插入图片描述

3.Log Buffer

在这里插入图片描述

在这里插入图片描述


二、物理存储结构

1.系统表空间

系统表空间
默认情况下InnoDB引擎只对应一个表空间,即系统表空间,所有InnoDB引擎表的数据(含索引)都存

储在该表空间中注意仅仅是保存数据和索引,表对象的结构信息仍保存在.frm文件中

InnoDB系统表空间对应哪些物理数据文件,通过系统变量 innodb_data_file_path 指定,其语法:

innodb_data_file_path = file_name:file_size[:autoextend[:max:max_file_size]]

在这里插入图片描述


2.独立表空间

默认的情况下,InnoDB引擎的表和索引都保存在系统表空间对应的数据文件中当数据量很大的时 候,管理成本就会上升。系统表空间的数据文件扩展后无法回缩,即使表被DROP或TRUNCATE,甚
至该表空间内实际已经没有任何数据,已分配的空间仍然仅是相对于InnoDB数据可用,而不能被操作系统再分配给其他文件使用。

针对这种情况,可以考虑应用InnoDB数据存储的另一项设定,InnoDB将其定义为多重表空间(multiple tablespaces),就是每个表对象拥有一个独享的.ibd为扩展名的数据文件,这个文件就是一个独立的表空间。

是否启用多重表空间是由系统变量 innodb_file_per_table 控制。

独立表空间优点:

1、各表对象的数据独立存储至不同的文件,可以更灵活地分散I/O、执行备份及恢复操作

2、当执行TRUNCATE/DROP删除表对象时,空间可以即时释放回操作系统层


3.Redo日志

1、redo 日志

redo 日志存储结构

redo日志仅针对InnoDB引擎,MySQL数据库的其他引擎是用不到的。默认情况下,InnoDB引擎会创

建两组大小均为5MB的日志文件,分别命名为ib_logfile0和ib_logfile1,日志文件保存在datadir变量指

定的路径下。不过可以通过InnoDB的专用参数修改日志路径、日志文件大小以及日志文件组的数量:

innodb_log_group_home_dir
innodb_log_file_size
innodb_log_files_in_group

redo 在事务中的应用

Redo的作用:
redo 来实现事务持久性,redo 对于AC也有相应的作用

持久性相关组件:
1.重做日志缓存(redo log buffer) ,是易失的
2.重做日志文件(redo log file),是持久的

持久性原理:
当事务提交(Commit)时,会刷新当前事务的redo buffer到重做日志文件中进行持久化,待事务的commit完成才算完成(会将此日志打上commit标记)。还会顺便将一部分redo buffer中没有提交的事务日志也刷新到redo日志文件中。

4.Undo日志

1、undo 日志

undo日志的作用:

对于事务操作来说,有提交就必然会有回滚,提交前面已经提到,就是确定保存写入的数据

那么回滚就要麻烦一些,因为它代表着两步操作:首先撤销刚刚做的修改,而后将数据恢复至修改前

的状态。那么,数据一经写入,怎么恢复到修改前的状态呢?最简单的方式,**就是在修改前先将旧数据保存下来,保存下的这部分数据就是UNDO日志,存储在系统分配好的 回滚段中

提交:确保提交的数据被保存
回滚的两步曲:一,撤销刚刚做的修改,二、第一步骤的基础上将数据恢复至修改前

回滚段中的UNDO日志分为两种:

1、insert UNDO : 仅在事务回滚时需要,事务提交后即可被废弃

2、update UNDO : 用于构造一致性读,当没有任何事务需要用到行记录的之前版本时才会被废弃。

考虑到InnoDB的回滚段,一致性读这类特性,建议事务尽早提交,不要长期持有。因为长事务可能会造成回滚段过大,占满整个系统表空间,从而拖累整个InnoDB引擎的运行。


UNDO 日志存储结构

默认情况,UNDO日志存储在系统表空间。从MySQL5.6版本开始,InnoDB引擎中的UNDO日志可以单独设置表空间,即UNDO表空间。想要使用独立的UNDO表空间,只需设置下面三个参数即可:
1、innodb_undo_directory :指定单独存放undo表空间的目录,默认为datadir。MySQL5.7只支持初始化设置,不可中途开启

2、innodb_rollback_segments :回滚段的数量, 至少大于等于35,默认128

3、innodb_undo_tablespaces :指定单独存放的undo表空间个数。必须在mysql初始化阶段设置,初始化完成后就不能再修改

Truncating Undo Tablespaces

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

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

相关文章

Flat Ads获广东电视台报道!CEO林啸:助力更多企业实现业务全球化增长

近日,在广州举行的第四届全球产品与增长展会(PAGC2024)上,Flat Ads凭借其卓越的一站式全球化营销和创新的变现方案大放异彩,不仅吸引了众多业界目光,同时也在展会上斩获了备受瞩目的“金帆奖”,展现了其在全球化营销推广领域的卓越实力和专业服务。 在大会现场,Flat Ads的CEO林…

差分约束题解

目录 注意点: 思路: SPFA和Dij的不同点: Dij: SPFA: AC代码: 扩展: 题目链接:【模板】差分约束 - 洛谷 注意点: 注意这一题不能用Dij,只能用SPFA 因为这样子才可以得出这个不…

【简单介绍下近邻算法】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…

全域运营是割韭菜吗?常见套路有哪些?

随着全域运营赛道的全面开启,全域运营服务商和全域运营系统的数量迅速增加,持续激发赛道活力的同时,也让一些试图用全域运营割韭菜的人有了可趁之机。 值得庆幸的是,由于当前全域运营赛道刚兴起不久,因此,割…

Raylib 绘制自定义字体的一种套路

Raylib 绘制自定义字体是真的难搞。我的需求是程序可以加载多种自定义字体,英文中文的都有。 我调试了很久成功了! 很有用的参考,建议先看一遍: 瞿华:raylib绘制中文内容 个人笔记|Raylib 的字体使用 - …

Nginx - 健康检查终极指南:探索Upstream Check模块

文章目录 概述upstream_check_module模块安装和配置指南模块安装步骤基本配置示例详细配置说明检查类型和参数常见问题及解决方案 SSL检查和DNS解析功能SSL检查配置示例和说明配置示例 DNS解析配置示例和说明配置示例 结合实际应用场景的高级配置示例综合SSL检查与DNS解析 总结…

代码随想录算法训练营第三天| 203.移除链表元素、 707.设计链表、 206.反转链表

203.移除链表元素 题目链接: 203.移除链表元素 文档讲解:代码随想录 状态:没做出来,做题的时候定义了一个cur指针跳过了目标val遍历了一遍链表,实际上并没有删除该删的节点。 错误代码: public ListNode re…

一键恢复安卓手机数据:3个快速简便的解决方案!

安卓手机作为我们不可或缺的数字伙伴,承载着大量珍贵的个人和工作数据。然而,随着我们在手机上进行各种操作,不可避免地会遇到一些令人头痛的问题,比如意外删除文件、系统故障或其他不可预见的情况,导致重要数据的丢失…

springboot基于Web前端技术的java养老院管理系统_utbl7

3.普通用户模块包括:普通会员的注册、养老院客房查询、养老院留言查询、预约老人基本信息登记、选择房间、用户缴费的功能。 4.数据信息能够及时进行动态更新,增删,用户搜素方便,使用户可以直接浏览相关信息,要考虑便于…

埋点——about前端

所谓“埋点”,是数据采集领域(尤其是用户行为数据采集领域)的术语,指的是针对特定用户行为或事件进行捕获、处理和发送的相关技术及其实施过程。比如用户某个icon点击次数、观看某个视频的时长等等,埋点的技术实质,是先监听软件应用运行过程中…

C#数据类型变量、常量

一个变量只不过是一个供程序操作的存储区的名字。 在 C# 中,变量是用于存储和表示数据的标识符,在声明变量时,您需要指定变量的类型,并且可以选择性地为其分配一个初始值。 在 C# 中,每个变量都有一个特定的类型&…

只需提交几次代码就能轻松实现系统级的变更!——“基础设施即代码”模式与实践

“基础设施即代码”模式与实践 基础设施即代码(Infrastructure as Code,IaC)是指利用脚本、配置或编程语言创建和维护基础设施的一组实践和流程。通过IaC,我们可以轻松测试各个组件、实现所需的功能并在最小化停机时间的前提下进行…

51-指针_野指针,指针运算

51-1 野指针 51-1-1 什么是野指针 概念:野指针就是指针指向的位置是不可知的(随机的、不正确的、没有明确限制的) 没有初始化 int main() {int* p;//p没有初始化,就意味着没有明确的指向//一个局部变量不初始化的话,放的是随机…

一文说透组织中的利润中心建设

当前,规模型企业越来越重视利润中心建设,华为的实践表明,建好了利润中心,利润自然好,组织也会上台阶。很多企业利润上不去,就是没有搞好利润中心这个火车头。然而,很多人误以为利润中心只是财务…

Cesium与Three相机同步(2)

之前实现了将Three相机同步到Cesium相机Cesium与Three相机同步(1)-CSDN博客 现在是将Cesium相机同步到Three相机,从而实现了相机双向同步。 <!DOCTYPE html> <html lang="en"><head><title>three.js webgl - orbit controls</title&g…

python:pycharm虚拟解释器报错环境位置目录为空

目录 解释器分控制台解释器 和 pycharm解释器 控制台解释器切换&#xff1a; pycharm解释器 解释器分控制台解释器 和 pycharm解释器 控制台解释器切换&#xff1a; 切换到解释器下 激活解释器 查看解释器 where python 激活成功 这时在控制台使用python xxx.py 可以…

OpenCV:入门(五)

图像梯度 图像梯度计算的是图像变化的速度。对于图像的边缘部分&#xff0c;其灰度值变化较大&#xff0c;梯度值也 较大&#xff1b;相反&#xff0c;对于图像中比较平滑的部分&#xff0c;其灰度值变化较小&#xff0c;相应的梯度值也较小。一般情 况下&#xff0c;图像梯度计…

k8s 1.28.10 浏览器访问6443查看api,需要证书

添加证书 使用client-certificate-data和client-key-data生成一个p12文件 1.生成client-certificate-data grep client-certificate-data ~/.kube/config | head -n 1 | awk {print $2} | base64 -d >> kubecfg.crt2.生成client-key-data grep client-key-data ~/.kub…

深 渔博会成功举办 新文件促进城市数字化转型| 产业互联网观察174期

深圳渔博会水产品竞价交易会成功举办 首批数据跨境一般数据清单发布 新文件加快城市全域数字化转型进程 | 产业互联网观察第174期 2024深圳渔博会水产品竞价交易会成功举办 5月17日至18日&#xff0c;深圳渔博会上深圳国际金枪鱼交易有限公司在深圳会展中心成功举办了水产品竞…

使用Prometheus + Blackbox-exporter快速监控一个网站性能和SSL过期时间

使用blackbox-exporter快速监控一个网站性能和SSL过期时间 环境介绍什么是blackbox-exporter下载blackbox-exporter安装blackbox-exporter配置Prometheus服务端查看job上线监控面板参考文献 环境介绍 本文实验环境 操作系统&#xff1a;Centos 7.9Prometheus版本&#xff1a;…