MySQL 进阶 怎么去了解MySQL的架构原理

前言

在了解 MySQL 原理之前,对我而言 MySQL 就是一个黑盒子,我写的SQL 语句通过服务发送给 MySQL 数据库,然后数据库就执行 SQL 语句,返回一些查询结果或做一些操作。然后就没然后了。。。再深入一点,就是知道某些 SQL 的写法会降低数据库执行效率,也就是需要所谓的 SQL 优化。但是为什么会降低执行效率呢???所以有必要了解一下 MySQL 的原理。
连接池

正文

SQL 语句要交给 MySQL 数据库执行,首先得跟数据库连接上吧,所以通常在服务中会加上 MySQL 的依赖包,也就是 MySQL 的驱动。也就是说我写的服务需要通过 MySQL 驱动与 MySQL 数据库建立连接。
  在这里插入图片描述

连接建立后就可以通过网络发送 SQL 语句到 MySQL 数据库,执行完返回结果后,连接即被销毁。如此反复建立连接-销毁连接,使得系统对于连接的消耗极大,这时就需要一个连接池来管理数据库的连接,就跟线程池管理线程一样(本质上也是通过线程建立的连接)。那我的服务中有连接池来建立连接了,数据库中应该也有对应的连接池,以保证数据的并发性能。
在这里插入图片描述

所以 MySQL 的架构第一环就是数据库连接池。

读取SQL

在这里插入图片描述

SQL 语句通过数据库连接发送到数据库,这时数据库就需要处理这条 SQL 了,那么谁来处理?当然是线程呐,现在计算机运行程序都是基于进程-线程来执行的。要处理某个程序动作当然要由某一个线程来处理,所以此时数据库会分配一个线程去监听连接池收到的 SQL,并从连接中读取 SQL 以便执行下一步操作。

SQL 接口

在这里插入图片描述

从连接读取到 SQL 后会把 SQL 交给 SQL 接口(SQL Interface)做进一步处理。

SQL 解析器

在这里插入图片描述

SQL 接口首先会将收到的 SQL 语句交给 SQL 解析器,把类似 “Select name from user where id = 1” 这种语义化的 SQL 语句解析为解析树,期间会通过 SQL 语法和规则验证 SQL 的合法性。

SQL 优化器

在这里插入图片描述

随后解析器预处理过的 SQL 交给优化器生成查询计划,优化器会通过一些策略选择最优的查询计划,然后把查询计划交给执行器执行。

SQL 执行器

执行器会调用相应的存储引擎查询接口,执行查询计划。
  在这里插入图片描述

存储引擎

存储引擎才会真正执行查询计划。
  在这里插入图片描述

总结

从业务 SQL 到 MySQL 真正执行的流程分析了整个 MySQL 数据库的架构。就是通过数据库连接池建立连接发送 SQL 语句到 MySQL 数据库,相应的 MySQL 数据库也会有一个连接池来保持与各个系统的数据库连接。然后 MySQL 数据库系统会有一个线程来保持监听和读取来自连接池连接发送过来的 SQL 语句,并把 SQL 语句交给 SQL 接口。SQL 接口会把 SQL 语句通过解析器解析、优化器优化查询、执行器调用存储引擎、存储引擎执行查询计划来从缓存或者磁盘中查询或执行相应的 SQL。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

变成派大星

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

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

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

打赏作者

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

抵扣说明:

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

余额充值