我们常用MySQL的查询 select * from table where id =10,但是只了解表象。内部是如何运行的呢,需要理解MySQL的基础架构。
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,将找到的多行记录放到结果集中,最后返回给客户端。
网友评论