MySQL - 一文了解MySQL的基础架构及各个组件的作用

28 篇文章 10 订阅
订阅专栏

1. 概述

不管是开运、运维、测试,都或多或少的要接触MySQL,了解MySQL的基础架构及各个组件之间的关系,有助于我们更加深入的理解MySQL,下面由一张MySQL基础架构图来一起走进MySQL。

在这里插入图片描述
MySQL可以基本划分为Server层存储引擎层两部分:

Server层包含了MySQL大多数核心功能,除了图中标注的连接器,查询缓存,分析器,优化器,执行器,还有所有的内置函数(日期,时间,数学和加密函数),所有跨存储引擎的功能都在这一层实现,如存储过程、触发器、视图等。

存储引擎层负责MySQL中数据的存储和提取。和Linux下的各种文件系统一样,每个存储引擎都有自己的优势和劣势,各种存储引擎通过提供API和Server层对接,通过API屏蔽各种存储引擎之间的差异。常见的存储引擎有InnoDB、MyISAM、Memory,现在最常用的是InnoDB,也是从MySQL5.5版本开始成为默认的存储引擎,在5.5之前默认的是MyISAM

2. 连接器

连接器是MySQL Server层的第一个模块,也是处理客户端请求的模块,连接器负责跟客户端建立连接、获取权限、维持和管理连接。

  • 登录命令
mysql -h$ip -P$port -u$user -p
# 或者
mysql -h$ip -P$port -u$user -p$password
  • 如果账号密码错误,会提示:Access denied for user

在这里插入图片描述

如果登录认证通过,会查询当前用户下的权限,之后用户的任何操作都是在这个权限范围内,即使你用管理员账号对这个用户的权限做了修改,也不会影响已经存在连接的权限。修改完成后,只有再新建的连接才会使用新的权限设置。

3. 查询缓存

查询缓存在 MySQL5.7.20 版本已过时,在 MySQL8.0 版本中被移除,这里作为了解即可。

MySQL 查询缓存存储客户端请求的查询结果信息( SELECT 语句)。MySQL 服务器在接收到相同的请求时,会直接将查询缓存中的结果返回给客户端,不再去数据库中重新查询。而且,查询缓存是在多个会话中共享的,一个客户端的查询缓存结果可以被另一个客户端的相同请求复用,从而加快了查询效率。

缓存以key-value的形式存储,存放在一个引用表中,key是通过一个哈希值的引用,这个哈希值包括查询本身(sql),当前要查询的数据库,客户端协议的版本等一些其他会影响返回结果的的信息;查询结果作为value(任何字符上的变化,例如空格,注释都会导致缓存不命中)。

如果表被更改,所有的缓存都将失效,表的更改是指数据的改变和表结构的改变,包括INSERT、UPDATE、 DELETE、TRUNCATE、ALTER TABLE、DROP TABLE或DROP DATABASE等。

对于数据经常变更的数据库来说,缓存命中率是很低的,这时查询缓存就是弊大于利,所以不建议使用缓存;而对于那些长时间不变、查询频率很高的数据,可以采用Redis缓存。

4. 分析器

我们根据MySQL语法编写一条SQL语句交给Server层以后,分析器会对SQL进行词法分析和语法分析。

已如下SQL为例:

select id,name from `tab`;
  • 词法分析

SQL语句是由多个字符串和空格组成的,MySQL的分析器需要识别里面的字符串分别是什么,代表什么。
MySQL从 “select” 关键字分析出这是一个查询语句,把字符串识别成 “tab” 表 ‘tab’,把字符串 “id,name” 识别成列 ‘id’,‘name’。

  • 语法分析

根据词法分析的结果,语法分析器会根据语法规则,判断你输入的SQL语句是否满足MySQL语法。

mysql> elect id,name from tab;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'elect id,name from tab' at line 1

一般语法错误会提示第一个出现错误的位置,所以你要关注的是紧接 “use near” 的内容。

5. 优化器

经过分析器生成的语法树被认为是合法的,交由优化器转化成执行计划。

MySQL判断出了一条SQL语句要做什么之后,对其进行各种优化,包括重写查询语句、选择合适的索引、表的读取顺序等等。

MySQL的优化器是基于成本的优化,尝试预测一个查询使用某种执行计划的成本,进而选择最小的那个。例如:表中有多个索引的时候决定使用哪一个、使用联合索引的时候根据索引调整where条件的顺序、多表关联(join)的时候,决定各个表的连接顺序等等。

如果想知道优化器是怎么进行优化决策的,可以通过explain获取优化的信息,explain具体的使用和解释后面章节会说明的。

6. 执行器

语句经过优化后,就要进入执行阶段,开始执行的时候,要先判断权限,如果没有,就返回没有权限的错误。如果有权限,就调用存储引擎的API操作数据。

在这里插入图片描述

6. 总结

用一条SQL语句的执行过程来总结一下:

在这里插入图片描述

  1. 去数据库连接池中获取一条数据库连接;

  2. 获取连接后把SQL语句发给数据库服务;

  3. 数据库服务负责监听网络事件接收到消息后交给SQL接口,SQL接口基于通信协议解析出SQL语句;

  4. 将解析出来的语句交给SQL解析器,解析出SQL语句要做的事情并提供所有方案;

  5. 查询优化器根据解析出的信息,优化出最佳的查询路径;

  6. 将优化后的查询路径交给SQL执行器去执行;

  7. 执行器调用存储引擎接口执行最优路径;

  8. 存储引擎在被执行器调用的过程中负责去访问内存和磁盘完成数据的更新等操作。

mysql-connector-java-8.0.22.jar
08-14
包含mysql-connector-java-8.0.22.jar包含mysql-connector-java-8.0.22.jar包含mysql-connector-java-8.0.22.jar包含mysql-connector-java-8.0.22.jar包含mysql-connector-java-8.0.22.jar包含mysql-connector-java-...
mysql-connector-java-8.0.29.jar
05-30
JDBC驱动jar包
MySQL体系结构及各结构的功能
Miziguo的博客
07-05 220
简述MYSQL体系结构及功能
MySQL高级知识点 | 一、逻辑架构与存储引擎
sc的博客
02-09 289
逻辑架构与存储引擎 Mysql逻辑架构介绍 mysql 数据库的逻辑架构如下图 mysql 的逻辑的逻辑架构大体分为四层:连接层、服务层、引擎层、存储层。下面我们就来一一介绍这四层。 连接层 最上层是一些客户端和连接服务,包含本地socket通信和大多数基于客户端/服务端工具实现的类似于tcp/ip的通信。 主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程池的概念,为通...
数据库-mysql架构与sql执行原理(上)(一)
平凡之路无尽路的博客
11-21 456
mysql的架构设计以及sql执行原理剖析
MySQL系列(七)— MySQL组件架构精讲
baihehanqiu1314的博客
08-14 167
学习了这么久MySQL方面的知识,想必你对MySQL常用的技能也有了很深的认识,但是MySQL的整个架构你了解多少呢?今天我们就从架构层面来简单介绍一下MySQL,对MySQL有一个整体的把握,为学习有一个整体的认识。
mysql 基础架构组件
suge大帝的博客
06-28 343
简单来说 MySQL 主要分为 Server 层和存储引擎层,Server 层:主要包括连接器、查询缓存、分析器、优化器、执行器等,存储引擎: 主要负责数据的存储和读取
nginx-php-mysql-ha高可用架构图
最新发布
09-23
nginx_php_mysql_ha高可用架构图
mysql-connector-java-8.0.30-jar包
01-13
该资源为mysql-connector-java-8.0.30-jar包,欢迎下载使用哦!
mysql-connector-j-8.0.33.zip
04-19
mysql数据库驱动包
mysql组件,目前比较少的
11-05
这个是mysql系列组件,目前网上很少,我也花了很多时间弄到的。特贡献给大家。
MySQL组成
m0_48273471的博客
02-24 963
mysql的组成
MySQL各个组件功能简介
chenzhi6732的博客
12-14 3153
MySQL Installer: Used to install and upgrade MySQL products. MySQL Workbench: Manages the MySQL server and edits SQL statements....
Mysql高级之Mysql各个组件介绍(总结)
weixin_44125071的博客
07-29 1210
Mysql各个组件连接器查询缓存可使用的参数分析器优化器执行器 连接器 1.连接器用来管理连接和进行权限验证 2.一个用户成功建立连接后,即使用管理员的账号对这个用户的权限进行了修改,也不会影响已经存在连接的权限,新连接才可以用新权限 3.建立连接的过程通常比较复杂,所以尽量使用长连接 4.Mysql执行过程临时使用的内存是管理在连接对象里面的 查询缓存 1.之前执行的结果可能会以key-value对的形式直接缓存在内存中,key是查询的语句,value是查询的结果 2.查询缓存的失效非常频繁,只要有一个
MySQL体系结构:八大功能模块浅析
weixin_33860528的博客
02-07 428
了解MySQL必须牢牢记住其体系结构图,MySQL是由SQL接口,解析器,优化器,缓存,存储引擎组成的:   1 Connectors指的是不同语言中与SQL的交互。   2 Management Serveices & Utilities: 系统管理和控制工具。   3 Connection Pool: 连接池。   管理缓冲用户连接,线程处理等需要缓...
MySQL基础架构:一条SQL“查询语句”是如何执行的
ArtAndLife的博客
11-17 894
MySQL由 连接器 查询缓存(8.0版本之前) 分析器 优化器 执行器 存储引擎 所组成。 1. 连接器: 连接器负责管理连接的【创建、维持、管理】以及【权限验证】。 执行SQL语句之前,客户端需要先与服务器进行连接,即: mysql -u root -p 此时客户端会与MySQL服务器之间进行TCP三次握手建立连接(传输层),在TCP连接建立后,再进行MySQL客户端权限验证(应用层),此时可能会出现两种情况: (1)MySQL用户名或者密码错误,此时客户端收到“Access denied f.
解决MySQl卸载卸不干净问题
热门推荐
woshiermingerming的博客
09-12 1万+
1.为什么?MySql卸载存在卸不干净问题? 因为你不断重装,他不仅在你所装的路径下有mysql组件,在C盘等其他位置,也有mysql组件在安装的时候自动生成的; 2、卸载步骤: (1)控制面板----服务和程序------卸载mysql (2)然后找到mysql文件夹下的my.ini及其所有组件 (3)在控制台运行redgit.exe (4)删除HKEY_LOCAL_MA
MYSQL SERVER组件一:
weixin_38987366的博客
03-22 593
MYSQL SERVER组件: 1、Parser: 解析器。 SQL命令传递到解析器的时候会被解析器验证和解析。解析器是由Lex和YACC实现的,是一个很长的脚本。 主要功能: a . 将SQL语句分解成数据结构,并将这个结构传递到后续步骤,以后SQL语句的传递和处理就是基于这个结构的 。 b. 如果在分解构成中遇到错误,那么就说明这个sql语句是不合理的。 2、Opt...
二、mysql组件详解
YABUSHAN
02-02 1015
目录 2.1. 连接器 2.1.1. 长连接和短连接的区别 2.1.2.mysql占用内存涨得快的原因之一 2.1.3. mysql占用内存涨得快的解决方案 2.2. 查询缓存 2.2.1. mysql中查询缓存的缺点 2.2.2.mysql中查询缓存的使用方案 2.3.分析器 2.3.1.词法分析 2.3.2.语法分析 2.3.优化器 2.3.1.优化器 ...
mysql-connector-java作用
06-11
mysql-connector-java 是 MySQL 官方提供的 Java 连接器,它实现了在 Java 程序中连接 MySQL 数据库的功能。它提供了一组 Java 类和接口,可以让 Java 开发人员方便地与 MySQL 数据库进行交互。通过使用 mysql-...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • MySQL - 死锁的产生及解决方案 17329
  • Java基础八股文(背诵版) 12540
  • Redis - Redisson lock和tryLock原理解析 10754
  • 【Java】Java 17 新特性概览 10684
  • 【SpringBoot】Maven 版本管理与 flatten-maven-plugin 插件的使用及分析 10182

分类专栏

  • MySQL 28篇
  • Redis 18篇
  • Spring Boot 16篇
  • 架构设计 6篇
  • Vue.js 7篇
  • RocketMQ
  • 计算机基础
  • 微服务 2篇
  • IntelliJ IDEA 3篇
  • Docker
  • Java 9篇
  • Java 并发编程 14篇
  • Java JVM
  • JavaScript
  • Linux
  • Zookeeper
  • Spring Security 5篇
  • Kafka

最新评论

  • MySQL - 死锁的产生及解决方案

    智涧灏: 想问一下这个和索引合并有啥关系,还有一点就是为啥就事务2要等待事务1释放主键索引的锁?

  • 【MySQL】MySQL 8.0 新特性之 - 公用表表达式(CTE)

    景X明: 为什么我在5.6版本也能这样写?

  • 【Java 并发编程】Java 线程池实现原理及其在业务中的实践

    随风飘扬大哥大: 我已经看完了,除非马云亲自请我出山帮忙重构淘宝,否则我都不想出山,看完就是这么牛表情包

  • 【Redis】Redis 的过期策略以及内存淘汰机制详解

    奥特迦: 可以往下再看哈,redis删除过期的key是 "定期 + 惰性" 策略,你提的问题就是惰性删除,会拿key先去查询,没过期就返回,过期了就删除。

  • 【Redis】Redis 的过期策略以及内存淘汰机制详解

    weixin_43528423: 问一嘴,1.2小节,过期后的数据依然会保存在内存中的,这时候即便这个 key 已经过期,我们还是能够获取到这个 key 的数据。这个过期了确实在内存里,但是还能获取到?

大家在看

  • Python经典必看书籍有哪些?这份书单推荐给你 1338
  • 24执业药师报名时间汇总及报名流程! 458
  • vector中下标[]操作、迭代器与size()在使用中遇到的问题 322
  • Samba:用于高效无限上下文语言建模的简单混合状态空间模型 717
  • Psim仿真教程-电路仿真软件功能介绍/电源工程师初级到高级进阶之路 124

最新文章

  • 【SpringBoot】一文详解 Spring Bean 循环依赖
  • 【Java】Java 17 新特性概览
  • 【Java】Java 11 新特性概览
2023年32篇
2022年36篇
2021年10篇
2020年21篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

奥特迦

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

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

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

打赏作者

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

抵扣说明:

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

余额充值

PHP网站源码坪地百姓网标王推广罗湖网站建设设计龙华百姓网标王推广大芬网站推广龙华网站优化按天扣费大芬seo优化横岗模板推广坪地企业网站设计大芬百度关键词包年推广南山模板推广龙岗模板网站建设大运seo南联关键词按天收费深圳建网站荷坳网站推广方案布吉设计网站惠州网站推广方案爱联网站搭建布吉网站推广系统大浪企业网站建设宝安网络广告推广大芬网站优化排名石岩企业网站改版龙岗高端网站设计松岗网站定制爱联seo优化光明英文网站建设东莞百度爱采购永湖网站定制大鹏网站优化软件歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化