【MySQL运行原理篇】底层运行结构

我们来学mysql -- 事务并发之不可重复读(原理篇) 事务并发 - 不可重复读 阅读详情

MySQL整体架构图

在这里插入图片描述
简略版图
在这里插入图片描述

1.1连接管理

  • 一句话:负责客户端连接服务器的部分

网络连接层, 对客户端的连接处理、安全认证、授权等,每个客户端连接都会在服务端拥有一个线程,每个连接发起的查询都会在对应的单独线程中执行。服务器上维护一个线程池,避免为每个连接创建和销毁线程。当客户端连接到MySQL服务器时,服务器对其进行认证。可以通过用户名与密码认证,也可以通过SSL证书进行认证。登录认证后,服务器还会验证客户端是否有执行某个查询的操作权限。这一层并不是MySQL所特有的技术。

1.2 解析与优化

  • 查询缓存
  • 语法解析
  • 查询优化

MySQL的核心服务功能层,该层是MySQL的核心,包括查询缓存,解析器,解析树,预处理器,查询优化器。主要进行查询解析、分析、查询缓存、内置函数、存储过程、触发器、视图等,select操作会先检查是否命中查询缓存,命中则直接返回缓存数据,否则解析查询并创建对应的解析树。

1.3 存储引擎

存储引擎,负责数据的存储和提取,MySQL服务器通过API与存储引擎通信,屏蔽了各种引擎之间的差异,常见的存储引擎有:InnoDB、MyISAM。

1.3.1 MySQL支持的存储引擎:

存储引擎描述
ARCHIVE用于数据存档(归档,记录后不能再修改)
BLACKHOLE丢弃写操作,读操作会返回空内容
CSV以英文逗号分隔的方式存储数据
FEDERATED用来访问远程表
InnoDB支持事务、行级锁、外键
MEMORY数据存在内存,不存磁盘;多用于临时表
MERGE用来管理多个MyISAM表构成的表集合
MyISAM主要是非事务处理存储引擎
NDBMySQL集群专用存储引擎

备注:我们最常用的存储引擎是InnoDB,MyISAM,MEMORY,后面文章会对InnoDB做详细的架构分析

1.3.2 三者的区别:

在这里插入图片描述

1.3.3 设置表的存储引擎

CREATE TABLE 表名(
	建表语句
) ENGINE = 存储引擎名称

1.4 文件系统

物理层 , 数据存储与日志, 将数据存放在硬盘上,后面文章会对磁盘结构做详细讲解。

总结

MySQL底层其实就相当于一个web应用结构。

例如:用户前端通过点击按钮发起ajax请求到java后台,后台接收到请求后将用户操作进行业务处理后,通过orm持久层框架(将业务实体与数据表联合)连接mysql,并将封装后的sql语句发送给mysql,mysql接收到sql后进行解析,优化,缓存。接着调用存储引擎的增删改查接口,对磁盘的database进行操作。

Sqoop原理篇 1 Sqoop简介       Apache Sqoop(SQL-to-Hadoop)项目旨在协助RDBMS与Hadoop之间进行高效的大数据交流。用户可以在 Sqoop 的帮助下,轻松地把关系型数据库的数据导入到 Hadoop 与其相关的系统 (如HBase和Hive)中;同时也可以把数据从 Hadoop 系统里抽取并导出到关系型数据库... 阅读详情

相关推荐

光模块MCU开发全解析:从架构原理到固件调试实战

在高速光模块中,MCU并非传统印象里的核心处理器,而是负责数字诊断、闭环控制和协议管理的嵌入式管家。随着800G、1.6T模块的普及,MCU与DSP/SoC的协同、I2C总线通信、ADC采集、APC/TEC控制等低速域任务愈发关键。理解MCU的选型规格、启动流程和固件设计,是保障光模块稳定运行的基础。本文从光模块架构切入,剖析MCU的角色定位,详细拆解I2C从机实现、电芯片配置、校准与升级等工程细节,并结合实际调试经验梳理常见故障与排查思路,为嵌入式工程师提供一份可落地的光模块MCU开发指南。

weixin_29192365的博客 363

【MySQL】MySql的底层数据结构

一个sql语句在mysql里究竟是如何运行的呢?又是怎么去查找的呢?其中就涉及到数据库(存储数据)以及查找算法。先来看一下几种查找算法;目录查找:类似索引遍历:暴力查找二分:B+树的基础算法键查找:hash查找能做索引的数据结构有:数组、链表、红黑树、B树(B-树、B+树)。那么哪种数据结构适合做 MySql 数据库的存储结构呢?先来说下数据的一般存储方式:内存(适合小数据量)、磁盘(大数据量)。磁盘的运转方式:速度 + 旋转,磁盘页的概念:每一页大概16KB。

DreamSun的博客 3776

Calibre LVS效率翻倍秘籍:用Hierarchical Flow处理亿级晶体管设计的5个关键阶段

本文详细解析了如何利用Hierarchical Flow技术提升Calibre LVS在亿级晶体管SoC设计中的验证效率。通过五个关键阶段的分层验证流程,包括顶层抽象验证、模块级独立验证等,可显著降低内存占用40-60%,缩短迭代周期50-70%,特别适用于SMIC等先进工艺节点。文章还分享了算力资源优化、并行化处理等实战技巧,帮助工程师应对大规模芯片验证挑战。

sam99的博客 768

一文搞懂MySQL架构设计,再也不用担心面试官问得太深

本篇文章主要带大家了解了MySQL分层架构,以及每层的架构的作用。可以看出MySQL每层架构分工明确、逻辑清晰,深刻地体现了架构设计中“高内聚,低耦合”的设计思想。我们平时在做架构设计的时候,也要多学习一下这种分层架构的设计思想。httpshttpshttpshttps。...

weixin_70730532的博客 558

项目管理-(补充)七种基本质量工具

七种基本质量工具,用于PDCA循环的架构内 解决与质量相关的问题,分为老七工具和新七工具。 1)老七种:刘英只点劣质茶(流程图、因果图、直方图、散点图、帕累托图、控制图、核查表)2)新七种:锯树联亲测动优(矩阵图、树形图、关联图、亲和图、过程决策程序图、活动网络图、优先矩阵)

weixin_42081167的博客 4603

别再乱设阻尼了!Abaqus动力分析中瑞利阻尼的α和β到底怎么算?

本文深入解析Abaqus动力分析中瑞利阻尼参数α和β的科学计算方法,帮助工程师准确设置阻尼参数以提升仿真精度。详细介绍了基于模态阻尼比的经典计算方法和多模态优化法,并结合工程案例演示参数设置流程,避免常见的阻尼设置误区。

weixin_42634811的博客 730

mysql底层结构

综上所述,MySQL 的底层结构包括存储引擎、数据文件、日志文件、索引等多个方面,不同的存储引擎具有不同的实现方式和特性,适用于不同的应用场景。理解 MySQL 的底层结构对于设计和优化数据库系统非常重要。MySQL 是一个开源的关系型数据库管理系统(RDBMS),其底层结构涉及多个方面,包括存储引擎、数据文件、日志文件、索引等。

xzz的博客 744

来自工业界的知识库 RAG 服务(二),RagFlow 源码全流程深度解析

前面介绍过有道 QAnything 源码解析,通过深入了解工业界的知识库 RAG 服务,得到了不少调优 RAG 服务的新想法。因此本次趁热打铁,额外花费一点时间,深入研究了另一个火热的开源 RAG 服务RagFlow的完整实现流程,希望同样有所收获。首先依旧可以先从框架图入手,与常规的 RAG 架构进行一些比较可以看到右侧知识库被明显放大,同时最右侧详细介绍了文件解析的各种手段,比如OCR等,这些在常规的 RAG 中可能会作为一个不起眼的。

易迟的专栏 2万+

mysql底层数据结构

mysql数据结构

Aarstg的博客 2857

深入SVT SPI VIP配置:如何灵活控制CS间隔、数据帧大小与时钟频率(含代码片段)

本文深入探讨了SVT SPI VIP的高级配置技巧,包括精确控制CS信号间隔、突破数据帧大小限制以及动态时钟频率切换。通过实战代码片段和详细配置步骤,帮助验证工程师灵活应对复杂SPI协议验证场景,提升验证效率和覆盖率。特别适合需要处理非标准SPI时序和特殊数据帧的芯片验证项目。

weixin_27014595的博客 280

独立游戏之路:Tap篇 -- 个人开发者上架TapTap步骤和注意事项

作为一名游戏开发者,将自己的独立游戏上架到 TapTap 平台是一个不错的选择。TapTap 是一个拥有大量用户的游戏社区平台,上架游戏可以让更多的玩家发现和体验你的游戏。TapTap 是一个游戏社区平台,用户可以在平台上下载和分享游戏。TapTap 拥有大量的用户,并且用户活跃度高,这为独立游戏开发者提供了一个很好的展示和推广平台。进入TapTap开发者服务后台。

陈言必行 -- Unity游戏开发领域优质博主 6401

MySQL数据库:SQL语句的执行过程

一、客户端的MySQL驱动: 我们的系统在和 MySQL 数据库进行通信前,需要先和数据库建立连接,而这个功能就是由MySQL驱动底层帮我们完成的,建立完连接之后,我们只需要发送 SQL 语句就可以执行 CRUD 了。如下图所示: 一次 SQL 请求就会建立一个连接,多个请求就会建立多个连接。假设我们的系统是部署在 tomcat 容器中的,tomcat 是可以并发处理多个请求的,这就会导致多个请求会去建立多个连接,然后使用完再都去关闭,这样会有什么问题呢?Java系统在通过 MySQL 驱动 和 .

张维鹏的博客 2万+

AI应用架构师:用RAG解决大模型“幻觉”问题的客服架构设计

在当今的智能客服领域,大语言模型(LLM)凭借流畅的对话能力和强大的理解能力,逐渐取代传统规则式机器人,成为客服系统的核心。但随之而来的“幻觉”问题(即模型编造不存在的信息)却成了致命伤:比如客户问“你们的产品保修期多久”,AI客服可能会自信地回答“3年”,而实际保修期只有1年——这种错误不仅会误导客户,还可能引发投诉、退货甚至法律风险。

AI天才研究院 914

【MySQL】MySQL体系结构与内部组件工作原理解析(原理篇)(MySQL专栏启动)

​ 《本专栏MySQL》已经更新了15篇,基本的知识以及实际应用的一小部分已经更新完毕,如果对MySQL 有一些疑惑,不要陷入一个管中窥豹、盲人摸象的状态,你应该有自己的“一言以蔽之”和对MySQL 的鸟瞰,这可以帮助你从高维度理解问题。 本文就是带你系统性学习MySQL 数据库的体系结构,详细介绍了MySQL的逻辑结构。

小明的Java问道之路 1万+

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

MySQL原理篇

事务,索引,锁的部分原理

Junhe4512的博客 2727

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

(六)MySQL索引原理篇:深入数据库底层揭开索引机制的神秘面纱!

到目前而言,对于MySQL的索引底层实现,大多数内容就全面讲明白了,从最开始的全表扫描过程,到磁盘IO实现、局部性原理、索引为什么默认是B+Tree结构、建立索引后发生的一系列事情、写类型的SQL对索引的影响.....等一系列内容进行了深入剖析。看完本章后,对于之前两章中抛出的一些疑惑,你稍加思考后也能彻底明悟,最后再简单说说聚簇索引和非聚簇索引的区别。聚簇索引和非聚簇索引的根本区别:聚簇索引中,表数据和索引数据是按照相同顺序存储的,非聚簇索引则不是。

weixin_54542328的博客 1050

MySQL索引原理篇:深入数据库底层揭开索引机制的神秘面纱

MySQL的索引机制,自始至终对于我们都是一个黑盒般的存在,我们并不清楚建立索引后MySQL会发生什么,也并不清楚使用索引查询时会如何检索......。对于索引咱们也留下了很多很多的疑惑:​相信大家多多少少都有了解过,毕竟这也是面试过程中出现次数较为频繁的一个技术点。在本文中就来一窥MySQL索引底层的神秘面纱!一、MySQL索引为何使用B+树结构?MySQL的索引机制中,有一点可谓是路人皆知,既默认使用B+Tree作为底层的数据结构,但为什么要选择B+树呢?有人会说树结构是以二分法查找数据,所以会在很大程

m0_74132984的博客 765

[MYSQL原理篇]存储引擎InnoDB的记录结构

mysql原理篇

s13215的博客 827

710-MySQL原理篇

MySQL原理篇 MySQL的四种隔离级别 SQL标准定义了4类隔离级别,包括一些具体规则,用来限定事务之间的隔离性。 这四种级别分别是读未提交、读已提交、可重复读、串型化。 读未提交,顾名思义,就是可以读到还没有提交的数据;读已提交会读到其它事务已经提交的数据;可重复读确保了同一事务中,读取同一条数据时,会看到同样的数据行;串型化通过强制事务排序,使其不可能相互冲突。 重点介绍下Repeatable Read Repeatable Read就是可重复读。它确保了在同一事务中,读取同一条数据时,会看到同样的

LINZEYU666的博客 363

六,MySQL索引原理篇:深入数据库底层原理揭开索引机制的神秘面纱

聚簇索引和非聚簇索引的根本区别:聚簇索引中,表数据和索引数据是按照相同顺序存储的,非聚簇索引则不是。聚簇索引在一张表中是唯一的,只能有一个,非聚簇索引则可以存在多个。聚簇索引在逻辑+物理上都是连续的,非聚簇索引则仅是逻辑上的连续。聚簇索引中找到了索引键就找到了行数据,但非聚簇索引还需要做一次回表查询。InnoDB-非聚簇索引与MyISAMInnoDB中的非聚簇索引是以聚簇索引的索引键,与具体的行数据建立关联关系的。MyISAM中的非聚簇索引是以行数据的地址指针,与具体的行数据建立关联关系的。

wenjunlang的博客 258

mysql优化指南之原理篇

首先我们来了解下mysql系统是怎样的,如下图:MySQL Server架构自顶向下大致可以分网络连接层、服务层、存储引擎层和系统文件层。1.网络连接层客户端连接器(Client Connectors):提供与MySQL服务器建立的支持。目前几乎支持所有主流的服务端编程技术,例如常见的 Java、C、Python、.NET等,它们通过各自API技术与MySQL建立连接。2.服务层(MySQL Server)

weixin_36098377的博客 1267

Mysql原理篇之redo日志--上--09

本篇文章为redo日志的原理篇,本文更多注重介绍redo日志的实现原理,可能对在Innodb存储引擎中一些作用和注意事项没有深入展开讲解,因此强烈建议大家先阅读此篇文章,否则阅读本文是可能会出现理解障碍: redo-log和bin-log的联系与区别我们知道InnoDB存储引擎是以页为单位来管理存储空间的,我们进行的增删改查操作其实本质上都是在访问页面(包括读页面、写页面、创建新页面等操作)。我们前边唠叨Buffer Pool的时候说过,在真正访问页面之前,需要把在磁盘上的页缓存到内存中的Buffer Po

m0_53157173的博客 679

MySQL索引详解(一):原理篇

本文从原理上分析了mysql有关索引的知识,层次清晰,每一个知识点都有原理讲解,不会直接放结果。

prop_erty的博客 797

【MySQL运行原理篇】InnoDB整体架构

InnoDB主要由后台线程、内存池和磁盘文件三个部分组成。后台线程的主要作用是负责刷新内存池中的数据,保证缓冲池中的内存缓存是最近的数据,此外将已修改的数据文件刷新到磁盘文件,同时保证在数据库发生异常的情况下InnoDB能恢复到正常运行状态。

You’re a wanderer just like me 1050

MySQL高阶之锁原理篇

MySQL高阶之锁原理篇update流程图Mysql锁的分类三级目录 update流程图 update t set c=‘曹操’ where id = 1; 主键等值更新速度最快 加行锁 主键范围更新需要加间隙锁 防止出现幻读 如果不应用索引需要加全表锁+间隙锁 Mysql锁的分类 1.锁的粒度 全局锁:锁住整个mysql实例 此时只能读 表级锁:锁定某一个表 行级锁:对某一行数据加锁。只有InnoDB引擎支持 2.锁的功能 X锁(写锁):排它锁 S锁(读锁):共享锁 3.锁的详解 全局锁: 锁住:flu

weixin_40471676的博客 733

MySQL索引原理篇上

1.谈谈你对索引的理解 索引就是一种数据结构,帮助我们更快的检索自己需要的数据,索引也很大,一般放在磁盘上。MYSQL针对不同存储引擎,索引实现方式也不一样,针对不同的应用场景存储索引也可以选择不同数据结构和类型。 2.Hash索引查找数据这么快,为什么hash索引却不常用? Hash索引只适用等值查找,而B+树不仅仅可以用作等值查找,还可以范围查找 2. 在hash均匀的情况下确实查找很快,但是在存储数据的hash碰撞较大,极端情况会退化成链表结构,这时候查询效率会大打折扣 3. hash索引是将.

爱弹琴的程序媛 1302
上一篇: 趣谈分布式与集群
下一篇: 【MySQL运行原理篇】InnoDB整体架构
_Romeo
_Romeo 优质创作者: 后端开发技术领域 优质创作者: 后端开发技术领域
博客等级 码龄8年 2万+粉丝 104原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_Romeo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值