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

前言

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

正文

SQL 语句要交给 MySQL 数据库执行,首先得跟数据库连接上吧,所以通常在服务中会加上 MySQL 的依赖包,也就是 MySQL 的驱动。也就是说我写的服务需要通过 MySQL 驱动与 MySQL 数据库建立连接。
  MySQL 进阶 怎么去了解MySQL的架构原理_第1张图片

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

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

读取SQL

MySQL 进阶 怎么去了解MySQL的架构原理_第3张图片

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

SQL 接口

MySQL 进阶 怎么去了解MySQL的架构原理_第4张图片

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

SQL 解析器

MySQL 进阶 怎么去了解MySQL的架构原理_第5张图片

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

SQL 优化器

MySQL 进阶 怎么去了解MySQL的架构原理_第6张图片

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

SQL 执行器

执行器会调用相应的存储引擎查询接口,执行查询计划。
  MySQL 进阶 怎么去了解MySQL的架构原理_第7张图片

存储引擎

存储引擎才会真正执行查询计划。
  MySQL 进阶 怎么去了解MySQL的架构原理_第8张图片

总结

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

你可能感兴趣的:(MSQL,相关知识,mysql,架构,数据库)