搜文章
推荐 原创 视频 Java开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发
Lambda在线 > 不送花的程序猿 > 【大白话系列】MySQL 学习总结 之 MySQL 的架构设计

【大白话系列】MySQL 学习总结 之 MySQL 的架构设计

不送花的程序猿 2020-02-20

一、MySQL还是个黑盒子

我们都知道,只要我们系统引入了 MySQL 驱动和连接池,就能从数据库连接池获取一个数据库连接,然后就可以执行增删改查的操作了。可是我们并不知道 MySQL 里面是怎么执行的,例如我们执行了 insert 语句,只知道表里面多了一条数据,MySQL 是怎么插入的我们就不知道了。

二、解开 MySQL 这个黑盒子

1、一条工作线程:

举例:我们都知道,在 Socket 编程里,ServerSocket 会有一条线程负责监听 Socket 发送过来的网络请求,并且负责从网络请求里读取请求数据,然后再进行处理 。

原理:那么在 MySQL 里也是一样的道理,会有一条 工作线程 专门去监听 MySQL 数据库连接池里的网络请求,并且负责将请求中的 SQL 读取出来。

2、 SQL 接口:

上面说到 MySQL 的工作线程会从网络连接中读取 SQL。但是接下来是由谁继续执行呢?

举例:我们可以想象一下,在我们的 Web 系统里头,Tomcat 这个进程会接收客户端的网络请求,然后经过转发交给我们写的 接口 执行。

原理:在 MySQL 里其实也一样,MySQL 就是一个数据库管理系统,上面提及到的工作线程会接收各个客户端的网络请求,然后经过转发交给内部的接口执行。而这里的内部接口,叫 SQL 接口,它是 MySQL 内部里的一个组件。它是一套执行 SQL 语句的接口,专门执行我们的那些增删改查的 SQL 语句。

3、查询解析器:

MySQL 能直接读懂我们写的 SQL 语句吗?能直接执行吗?

举例:我们都知道,现在的计算机其实都不懂得我们输入的命令,它只懂最后的 接收到的0/1信号。

原理:MySQL 也一样,虽然我们按照一定的 SQL 语法写出了 SQL,但是 MySQL 却不能直接读懂这个 SQL 语句,并且 MySQL 的数据最后是存放在磁盘文件中的,所以需要先解析 SQL 语句,才知道怎么从磁盘文件中读取数据、修改数据、新增数据或者是删除数据。这时候,查询解析器 就来了,它会专门对 SQL 语句按照一定的规则进行解析,然后让 MySQL 理解这个 SQL 语句是要干啥的。

4、查询优化器:

举例:相信大家都听过这么一句话:条条大道通罗马,但是肯定有的路近,有的路远。

原理:而 MySQL 执行 SQL 一样,也有很多种执行方法可以得到一样的结果,但是必定有的方法执行效率高,有的方法执行效率低。这个时候,查询优化器 就来了,它会根据 查询解析器 解析后的结果为 SQL 制定一套最优的执行计划。

5、执行器:

上面提到了最优的执行计划,那么计划必须有人的去执行,才能得到我们写的 SQL 的结果。

这时候,MySQL 里的 执行器 会按照查询优化器生成的一套最优执行计划,一步一步的执行下去,直到完成这个计划为止。

6、存储引擎:

其实到了最后,真正操作数据库数据的是 MySQL 里的 存储引擎。上面的执行器会根据执行计划去不断调用存储引擎的接口来完成执行计划。

当然了,MySQL 支持的存储引擎有很多种,但是下一讲我们会介绍现在互联网最流行的 InnoDB 存储引擎,先介绍它的整体架构设计是怎样的。


版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《【大白话系列】MySQL 学习总结 之 MySQL 的架构设计》的版权归原作者「不送花的程序猿」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

关注不送花的程序猿微信公众号

不送花的程序猿微信公众号:Howinfun

不送花的程序猿

手机扫描上方二维码即可关注不送花的程序猿微信公众号

不送花的程序猿最新文章

精品公众号随机推荐