几张图就让你掌握InnoDB 存储引擎底层逻辑架构

在这里插入图片描述

前言

🚀 博主介绍:大家好,我是无休居士!一枚任职于一线Top3互联网大厂的Java开发工程师! 🚀

💡 无论你是刚刚踏入编程世界的新人,还是希望进一步提升自己的资深开发者,在这里都能找到适合你的内容。我们共同探讨技术难题,一起进步,携手度过互联网行业的每一个挑战

📣 如果你觉得我的文章对你有帮助,请不要吝啬你的点赞👍分享💕和评论哦! 让我们一起打造一个充满正能量的技术社区吧!


目录标题

  • 前言
  • 1.MySQL的整体架构
  • 2.InnoDB存储引擎架构的内存和磁盘结构
    • 2.1InnoDB内存结构
    • 2.2InnoDB磁盘结构
  • 3.InnoDB内存结构空间复杂度和时间复杂度分析 ⏳
    • 3.1 空间复杂度
    • 3.2 时间复杂度


InnoDB是MySQL默认的存储引擎,它支持事务处理、行级锁定以及外键约束等特性。InnoDB的设计目标是提供高性能和高可靠性,因此它的内部结构非常复杂且高效。

InnoDB使用了多种内存缓冲区来提高性能,主要包括:

  • Buffer Pool:用于缓存表数据和索引。
  • Change Buffer:用于缓存插入、更新和删除操作。
  • Adaptive Hash Index:自适应哈希索引,加速某些查询。
  • Log Buffer:日志缓冲区,用于缓存重做日志(redo log)。

InnoDB的数据存储在磁盘上,主要包含以下几个部分:

  • System Tablespace:系统表空间,包含数据字典和其他系统信息。
  • File-per-Table Tablespaces:每个表一个文件的表空间,用于存储单个表的数据。
  • Redo Log Files:重做日志文件,记录事务的变更。
  • Undo Log:回滚日志,用于事务回滚和MVCC(多版本并发控制)。

1.MySQL的整体架构

在这里插入图片描述

2.InnoDB存储引擎架构的内存和磁盘结构

官网架构
在这里插入图片描述
由图可知 InnoDB的底层结构主要由2部分组成:内存结构和磁盘结构。
在这里插入图片描述

个人理解

在这里插入图片描述

在这里插入图片描述

2.1InnoDB内存结构

在这里插入图片描述

2.2InnoDB磁盘结构

在这里插入图片描述

在这里插入图片描述
磁盘中各数据页的整体结构如下图所示:
在这里插入图片描述
单个数据页包含哪些内容呢?
在这里插入图片描述

在这里插入图片描述

3.InnoDB内存结构空间复杂度和时间复杂度分析 ⏳

3.1 空间复杂度

  • Buffer Pool:假设缓存页数为 N,每页大小为 M,则空间复杂度为 O(N * M)
  • Change Buffer:假设变更操作数量为 K,则空间复杂度为 O(K)
  • Adaptive Hash Index:假设哈希索引条目数量为 H,则空间复杂度为 O(H)
  • Log Buffer:假设日志条目数量为 L,则空间复杂度为 O(L)

3.2 时间复杂度

  • Buffer Pool:读写操作的时间复杂度为 O(1)(哈希查找)。
  • Change Buffer:添加变更操作的时间复杂度为 O(1)(队列操作)。
  • Adaptive Hash Index:查找操作的时间复杂度为 O(1)(哈希查找)。
  • Log Buffer:写入日志的时间复杂度为 O(1)(列表追加)。

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

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

相关文章

10.24.2024刷华为OD C题型(四) -- 对象list按照多个属性排序

文章目录 最长连续子序列AI面板识别语法知识记录 最长连续子序列 https://www.nowcoder.com/discuss/592408743019589632 if __name__ "__main__":# 获取用户输入# numbers int(input().split(,))# str_arr input().split(,)arr [int(num) for num in input(…

【安装教程】使用WSL工具,在Windows11系统上安装Linux模拟环境(逐步教程)

目录 一、为什么要学习Linux系统 二、Linux模拟环境(WSL) WSL的官方文档 1、下载WSL 2、安装Ubuntu 结语 提示:WSL下的Linux模拟环境是纯命令行操作的。如果想要使用桌面系统,则应该考虑其他的虚拟机,如VMware。我…

从校园到职场:Java实习生面试常见问题

Java实习生面试通常会涵盖多个方面的知识,包括基础知识、项目经验、解决问题的能力以及面试技巧。以下是一些常见的Java实习生面试题及其回答技巧: Java基础知识 问题:Java有那些基本数据类型,String是不是基本数据类型&#xff…

java实现redis的消息发送和消费,类似kafka功能

确保在 pom.xml 中添加了 Spring Data Redis 和 Jedis 的依赖。如下所示&#xff1a;<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency&g…

C数组与字符串

1.数组 数组是一组有序的、类型相同的数据的集合&#xff0c;这些数据被称为数组的元素。 每个数组都有一个名字&#xff0c;我们称之为数组名。 数组名代表数组的起始地址。 数组元素由索引或下标标识&#xff0c;索引或下标从0开始 数组的特性必须在使用前定义&#xff1…

Mycat 详细介绍及入门实战,解决数据库性能问题

一、基本原理 1、数据分片 &#xff08;1&#xff09;、水平分片 Mycat 将一个大表的数据按照一定的规则拆分成多个小表&#xff0c;分布在不同的数据库节点上。例如&#xff0c;可以根据某个字段的值进行哈希取模&#xff0c;将数据均匀的分布到不同的节点上。 这样做的好处…

OpenIPC开源FPV之Ardupilot配置

OpenIPC开源FPV之Ardupilot配置 1. 源由2. 问题3. 分析3.1 MAVLINK_MSG_ID_RAW_IMU3.2 MAVLINK_MSG_ID_SYS_STATUS3.3 MAVLINK_MSG_ID_BATTERY_STATUS3.4 MAVLINK_MSG_ID_RC_CHANNELS_RAW3.5 MAVLINK_MSG_ID_GPS_RAW_INT3.6 MAVLINK_MSG_ID_VFR_HUD3.7 MAVLINK_MSG_ID_GLOBAL_P…

ActiveMQ消息模式Queue和Topic机制讲解

Docker安装ActiveMQ镜像以及通过Java生产消费activemq示例_docker activemq-CSDN博客 背景 周末由于服务器异常宕机&#xff0c;导致业务系统重启后出现ActiveMQ中的数据没有被正常消费&#xff0c;运维认为是消息积压&#xff0c;便联系博主排查。 最终发现并不存在消息积压…

GIS常见前端开发框架

#1024程序员节&#xff5c;征文# 伴随GIS的发展&#xff0c;陆续出现了众多开源地图框架&#xff0c;这些地图框架与众多行业应用融合&#xff0c;极大地拓展了GIS的生命力&#xff0c;这里介绍几个常见的GIS前端开发框架&#xff0c;排名不分先后。 1.Leaflet https://leafl…

Spring--1

spring是一个轻量级的&#xff0c;采用IOC与AOP编程思想的java后端开发框架&#xff0c;简化了企业级的应用开发。 Spring体系 数据访问层&#xff0c;Web层&#xff0c;配置中心&#xff0c;测试区 IOC 控制反转&#xff0c;将创建对象的控制权交由Spring框架&#xff0c;需…

Tongweb7049m4+THS6010-6012版本 传真实ip到后端(by yjm+lwq)

遇到客户需要通过ths传真实ip到后端也就是部署到tongweb的需求&#xff0c;在ths的httpserver.conf里的location块配置了以下内容&#xff1a; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwar…

Redis技术解析(基于Redis的项目实战)

本项目源码请从作者仓库中拉取 Redis复盘: 本项目将通过实战讲解Redis的应用&#xff0c;包括使用Redis共享session实现短信登录、处理商户查询缓存问题、进行优惠券秒杀活动、基于GEOHash定位附近商户、实现UV统计、管理用户签到、构建好友关注系统&#xff0c;以及使用List和…

数字后端实现静态时序分析STA Timing Signoff之min period violation

今天给大家分享一个在高性能数字IC后端实现timing signoff阶段经常遇到的min period violation。大部分时候出现memory min period问题基本上都是需要返工重新生成memory的。这是非常致命的错误&#xff0c;希望大家在做静态时序分析时一定要查看min period violation。 什么是…

Oracle 常见索引扫描方式概述,哪种索引扫描最快!

一.常见的索引扫描方式 INDEX RANGE SCANINDEX FAST FULL SCANINDEX FULL SCAN(MIN/MAX)INDEX FULL SCAN 二.分别模拟使用这些索引的场景 1.INDEX RANGE SCAN create table t1 as select rownum as id, rownum/2 as id2 from dual connect by level<500000; create inde…

Unity RPG梦幻场景素材(附下载链接)

Unity RPG梦幻场景素材 点击下载资源 效果图&#xff1a; 资源链接

CORS预检请求配置流程图 srpingboot和uniapp

首先要会判断预检请求 还是简单请求 简单请求 预检请求 #mermaid-svg-1R9nYRa7P9Pll4AK {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-1R9nYRa7P9Pll4AK .error-icon{fill:#552222;}#mermaid-svg-1R9nYRa7P9Pll4…

geoserver解析元数据获取图层相关参数

需求&#xff1a; 1、通过geoserver地址获取所有图层名称&#xff1b; 2、加载wms服务&#xff0c;实现自动定位。 获取图层名和范围视图有两种思路&#xff1a; 1、调取geoserver的rest接口。缺点就是需要验证登录。 rest接口官方文档&#xff1a;GeoServer API Docs 2、…

C++(标准输入输出流、命名空间、string字符串、引用)

C特点及优势 &#xff08;1&#xff09;实现了面向对象&#xff0c;在高级语言中&#xff0c;处理运行速度是最快&#xff1b; &#xff08;2&#xff09;非常灵活&#xff0c;功能非常强大&#xff0c;相对于C的指针优势&#xff0c;C的优势为性能和类层次结构&#x…

书生营 L0G4000 玩转HF/魔搭/魔乐社区

模型下载 在codespace上给环境装包&#xff0c;按照教材即可 运行后下载成功 建立下载json文件 新建下载internlm2_5-chat-1_8b的json文件 运行结果 基本上没啥问题&#xff0c;照着教程来就行 模型上传&#xff08;可选&#xff09; push的时候需要先认证token 最后的…

人工智能+医学

医学影响的内型&#xff1a;(X光片、计算机断层扫描、磁共振成像、超声波&#xff09; ITK snap医学图像读取 医学影像领域常见任务: 图像分类、语义分割、疾病预测、目标检测、图像配准、图像生成(应用少)、图像增强、生成放射学报告。 需要有很强的可解释…