【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 系统里抽取并导出到关系型数据库... 阅读详情

相关推荐

实验手册(灾难恢复)

我们发现DC1与DC2的复制出现问题,此时我们检查了在DC2中,DC1是否被正确注册。这里选择还原系统状态,因为我们原DC1上只备份了AD的数据,所以我们在新的这台服务器上还原的也是AD数据库。因为我们是单域下的测试,只测试了一个域,所以它会出现这样的报错。我们选择远程共享文件夹,我们备份的时候,是在备份这台服务器上的。同时删除SRV记录,A记录,NS记录,SOA记录,框框里面的所有有关dc1的记录全部删除。如果在企业中AD数据的备份是每周或者每月都会有一次备份,选择恢复AD数据库的时间。

weixin_52364868的博客 1309

【MySQL】MySql的底层数据结构

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

DreamSun的博客 3776

全国大学校园网—拓扑图欣赏

全国大学网络拓扑图(一百张) 典型十张 1、 中央财经大学 2、国防科技大学 3、济南大学 4、西安石油大学 5、南通大学IPV6网络 6、中国矿业大学 7、青海师范大学 8、内蒙古科技大学 9、三峡大学 10、中共江苏省党校 剩余90张 点赞、评论获取 ...

LiBai'S BLOG 5万+

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

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

weixin_70730532的博客 558

避坑指南:CST粒子工作室Track Solver常见的5个参数设置错误

本文深入剖析了CST粒子工作室中Track Solver在电子枪仿真时常见的5个关键参数设置错误,包括空间电荷模型选择、发射源定义、材料边界处理、监视器配置及求解器稳定性设置。通过对比错误与正确做法,帮助用户避开陷阱,确保粒子追踪仿真的物理准确性与数值稳定性,从而获得更精准的电子枪仿真结果。

dapp9builder的博客 486

SimMechanics二连杆仿真避坑指南:Solid模块坐标系设置与Rigid Transform常见错误

本文详细解析了SimMechanics中二连杆平面臂仿真的常见问题,重点探讨Solid模块坐标系设置与Rigid Transform模块的配置陷阱。通过实战案例和MATLAB代码示例,揭示多体系统仿真中的关键错误点,包括坐标系方向定义、参数匹配、端口连接规则等,帮助工程师有效规避仿真风险,提升建模效率。

weixin_29309213的博客 411

mysql底层结构

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

xzz的博客 744

SpringBoot项目搭建

SpringBoot项目搭建

私信可回答各种问题~ 1019

mysql底层数据结构

mysql数据结构

Aarstg的博客 2857

FlashBootloader01-基于UDS的Flash Bootloader【架构篇】

文章目录1 Flash Bootloader的依赖项2 Flash Bootloader中使用的UDS的主要功能3 Flash Bootloader更新固件3.1 初始化MCU3.2 刷写流程 1 Flash Bootloader的依赖项 通常Flash Bootloader由以下四方面组成: UDS协议 上位机「编写Bootloader Sequence」 通信驱动(如CAN ) Flash Driver 2 Flash Bootloader中使用的UDS的主要功能 1. 10 02服务 客户端

3589

SAP_SD模块 物料科目分配/成本简介

路径:SPRO—销售与分销—基本功能—科目分配/成本—收入账户确定—收入科目确定相关性—定义并分配科目代码—定义科目代码。路径:SPRO—销售与分销—基本功能—科目分配/成本—收入账户确定—收入科目确定相关性—定义访问顺序和科目确定类型。路径:SPRO—销售与分销—基本功能—科目分配/成本—收入账户确定—收入科目确定相关性—定义并分配科目确定过程。文本主要说明销售模块中的科目分配和成本的一个对应关系。SPRO—销售与分销—基本功能—科目分配/成本—收入账户确定—检查科目分配的相关主数据。

我小时候很黑的博客 2617

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

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

张维鹏的博客 2万+

华为OD机考双机位C卷 - 池化资源共享 (Java & Python& JS & C/C++ & GO )

华为OD机考双机位C卷 - 池化资源共享 (OD上机考试双机位C卷)。提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。

算法大师! 1070

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

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

小明的Java问道之路 1万+

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

MySQL原理篇

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

Junhe4512的博客 2727

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

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

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

weixin_54542328的博客 1050

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

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、付费专栏及课程。

余额充值