InnoDB架构,一幅图秒懂!

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 简单说说InnoDB架构。一分钟,一幅图,秒懂。

网上写MySQL架构的文章比较多,写InnoDB架构的文章比较少,今天简单说说InnoDB架构。

画外音:一分钟,一幅图,秒懂

MySQL简要架构是怎么样的?
image.png

MySQL整体分为三层:
(1)客户端,是各种编程语言的connector
(2)MySQL服务,内部包含各种组件,实现各种功能
(3)文件系统数据存储与日志

其中,MySQL服务内,可以以插件的形式,实现各种存储引擎

在InnoDB,MyISAM,Memory…等各种存储引擎中,InnoDB是使用范围最广的
画外音:事务,行锁,聚集索引,MVCC…众多特性让InnoDB备受青睐

InnoDB简要架构是怎么样的?
image.png

InnoDB整体也分为三层:
(1)内存结构(In-Memory Structure),这一层在MySQL服务进程内;
(2)OS Cache,这一层属于内核态内存;
(3)磁盘结构(On-Disk Structure),这一层在文件系统上;

这三层的交互有两类:
(1)通过OS Cache落地数据(上图中,两个短箭头);
(2)直接O_Direct落地数据(长途中,长箭头);
画外音:这是一个性能与一致性折衷的设计

InnoDB内存结构包含哪些核心组件
InnoDB内存结构包含四大核心组件,分别是:
(1)缓冲池(Buffer Pool);
(2)写缓冲(Change Buffer);
(3)自适应哈希索引(Adaptive Hash Index);
(4)日志缓冲(Log Buffer);

恰好,这四大核心组件,今年都详细的写过。

缓冲池(Buffer Pool)
目的是提升InnoDB性能,加速读请求,避免每次数据访问都进行磁盘IO。
画外音:和系统架构设计中缓存的功能有点像,避免每次访问数据库
这里面涉及的技术点包括:预读,局部性原理,LRU,预读失败+缓冲池污染,新生代老生代双链LRU…细节参见《缓冲池(buffer pool),彻底懂了!》。

写缓冲(Change Buffer)
目的是提升InnoDB性能,加速写请求,避免每次写入都进行磁盘IO。
画外音:我C,这个牛逼,写入居然都可以不进行磁盘IO
细节参见《写缓冲(change buffer),彻底懂了!》,这篇文章的细节原理,特别有意思。

自适应哈希索引(Adaptive Hash Index)
目的是提升InnoDB性能,加速读请求,减少索引查询的寻路路径。
这里面涉及的技术点包括:聚集索引,普通索引,哈希索引…细节参见《InnoDB到底支不支持哈希索引》。

日志缓冲(Log Buffer)
目的是提升InnoDB性能,极大优化redo日志性能,并提供了高并发与强一致性的折衷方案。
这里面涉及的技术点包括:redo log作用,流程,三层架构,随机写优化为顺序写,次次写优化为批量写…细节参见《事务已提交,数据却丢了,赶紧检查下LogBuffer》。

InnoDB磁盘结构包含哪些核心组件
主要包括日志表空间,其结构与原理比InnoDB内存结构更加复杂,如果大家感兴趣,未来再撰文详述。
image.png

一分钟系列,希望大家对InnoDB架构,以及InnoDB内存结构的四大组件有了更系统性的了解。

知其然,知其所以然,希望大家有收获。

本文转自“架构师之路”公众号,58沈剑提供。

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
4月前
|
存储 缓存 关系型数据库
⑩⑧【MySQL】InnoDB架构、事务原理、MVCC多版本并发控制
⑩⑧【MySQL】InnoDB架构、事务原理、MVCC多版本并发控制
107 0
|
7月前
|
存储 缓存 关系型数据库
【Mysql-InnoDB系列】InnoDB架构
mysql官方文档,8.0版本,InnoDB架构的深度学习
53 0
|
10月前
|
SQL 缓存 运维
InnoDB重做日志架构和innodb_redo_log_capacity系统变量(译文)
说明:从MySQL 8.0.30开始,InnoDB的重做日志架构发生了重大变化,重做日志文件被固定为32个,并存放在一个专门的目录下面,用户可以使用系统变量innodb_redo_log_capacity在线修改重做日志容量,原来的innodb_log_files_in_group和innodb_log_file_size两个系统变量已经废弃。
146 0
|
11月前
|
SQL 存储 缓存
图解MySQL系列(2)-SQL实战研究InnoDB架构设计
业务系统通过一个数据库连接发给MySQL,经过SQL接口、解析器、优化器、执行器,解析SQL语句,生成执行计划,接着由执行器负责执行该计划,调用InnoDB的接口去实际执行。
155 0
|
存储 SQL 缓存
Innodb体系架构学习整理
InnoDB存储引擎最早由Innobase Oy公司开发,被包括在mysql数据库所有的二进制发行版本中,从mysql5.5版本开始默认的表存储引擎。其中Heikki Tuuri是InnoDB存储引擎的创始人。 InnoDB架构体系包含后台线程、内存、checkpoint技术,其中后台线程包含主线程、io处理线程、回收分配undo线程、页清理线程;内存包括缓冲池、重做日志缓冲、额外缓冲池;checkpoint技术包含 Sharp Checkpoint、FuzzyCheckpoint,数据库运行时,通常会和FuzzyCheckpoint打交道,通常会根据检查点age来处理
108 0
Innodb体系架构学习整理
|
存储 SQL 缓存
MySQL-InnoDB引擎-架构和事务原理
MySQL-InnoDB引擎-架构和事务原理
MySQL-InnoDB引擎-架构和事务原理
|
存储 SQL 缓存
MySQL存储引擎详解(一)-InnoDB架构
MySQL存储引擎详解(一)-InnoDB架构
355 0
MySQL存储引擎详解(一)-InnoDB架构
|
存储 关系型数据库 MySQL
Mysql innodb存储引擎体系架构
innodb存储引擎体系架构
3003 0
|
存储 监控 JavaScript
《MySQL技术内幕:InnoDB存储引擎第2版》——2.3 InnoDB体系架构
本节书摘来自华章计算机《MySQL技术内幕:InnoDB存储引擎第2版》一书中的第2章,第2.3节,作者:姜承尧著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1755 0
|
3天前
|
敏捷开发 监控 数据管理
构建高效微服务架构的五大关键策略
【4月更文挑战第20天】在当今软件开发领域,微服务架构已经成为一种流行的设计模式,它允许开发团队以灵活、可扩展的方式构建应用程序。本文将探讨构建高效微服务架构的五大关键策略,包括服务划分、通信机制、数据管理、安全性考虑以及监控与日志。这些策略对于确保系统的可靠性、可维护性和性能至关重要。