# mysql 从逻辑架构学习MySQL

我们常用MySQL的查询 select  * from table where id =10,但是只了解表象。内部是如何运行的呢,需要理解MySQL的基础架构。

# mysql 从逻辑架构学习MySQL_第1张图片
MySQL逻辑架构图

分为Service层和存储引擎层,Service层做逻辑判断,存储引擎层放入或者取出数据。

下面讲解:select * from T where id = 10 执行流程

1、客户端连接mysq服务器

    mysql -h -p -u -p ,会进行用户登录验证,用户权限验证

2、查询缓存(不一定有该流程)

    是对查询结果的缓存,之前执行过的SQL查询结果的Key-value值。不推荐使用,因为表结构或者数据发生改变时都会失效。

3、分析器

    分析这条sql语句,语法的正确性,判断语句类型(查询还是更新),识别表名,列名,执行的关键字。例如:select 执行查找的关键字,T为表名,id是列名。

4、优化器

    选择这表sql语句的执行方式,例如选择索引,或者连接查询时先执哪张表的连接查询。

5、执行器

    分析器决定了做什么,优化器决定了怎么做,轮到执行器执行sql语句了。

    首先,判断用户对这张表的执行权限,然后根据表的引擎定义调用该引擎的接口去T表做查询,没有建索引的表会一行行查询Id字段是否为10,将找到的多行记录放到结果集中,最后返回给客户端。

你可能感兴趣的:(# mysql 从逻辑架构学习MySQL)