为什么MySQL叫黑盒?对于大多数开发者来说,写增删改查的sql语句是通过数据库连接来操作数据库的,而并不关心数据库是如何监听请求并从连接中提取请求数据的。他们往往关心表结构,sql执行效率慢就给他们建索引,把mysql当作黑盒。1、网络连接必须使用线程来处理MySQL使用内部线程来实现监听和读取请求。2、SQL接口:负责处理接收到的sql语句MySQL通过sql接口对我们平时写的sql语句进行了简化,让我们可以很方便的学习和编写sql语句,但是它的底层实现其实很复杂。工作线程收到sql语句后,会交给sql接口执行。3、查询解释器:让MySQL理解sql语句MySQL是数据管理系统,不能像我们一样直接理解sql语句,例如:selectid,name,agefromuserswhereid=1复制代码需要借助componentqueryparser来理解sql语句解析以及拆解,拆解成以下几个部分:fromusers:我们要从users表中查询数据whereid=1:查询id字段值为1的那一行数据selectid,name,age:从检测到的三个字段中”id,name,age”从那行数据中提取出来4.查询优化器:选择最优查询路径查询优化器会根据SQL生成一个查询路径树,然后从中选择一个最优查询路径。5、调用存储引擎接口,真正执行sql语句。数据库中存储的数据可以存储在磁盘上,也可以存储在内存中。那么如何判断查询数据存储在哪里呢?存储引擎根据执行者的调度执行SQL逻辑。无论是从内存缓存中查询数据,还是从磁盘中更新数据,一系列的操作都是由存储引擎完成的。6.Executor:根据执行计划调度存储引擎。执行器根据优化器的执行计划调用存储引擎的各种接口,完成SQL语句的执行。总结:在MySQL架构设计中,SQL接口、SQL解析器、查询优化器、执行器都是一组通用的组件,只是存储引擎有不同的选择,比如:InnoDB、MyISAM、Memory等,对应不同的应用场景,MySQL默认使用的是InnoDB,后续会逐步分析。所以总结一下,MySQL中执行SQL语句的顺序是:sql接口->解析器:解释sql->优化器:生成执行计划->执行器:执行计划调用InnoDB存储引擎接口执行sql
