SQL执行流程
1.执行流程图
2.流程图说明
一条sql语句从发送到数据库到它执行完成并返回结果,主要经历以下几个过程:
连接器->查询缓存(如果开启了查询缓存,则会经过这一步,但是大多数情况下都是不开启的,也不建议开启,MySQL 8.0之后也删除了这一块功能)->分析器->优化器->执行器
1. 连接器
首先我们要跟数据库建立连接,这个过程就是连接器来完成的,它主要负责与客户端的通信,验证用户名和密码是否正确等。大多数的应用系统会在第一次启动的时候建立好一定数量的数据库连接池,这个就是通过连接器与数据库提前建立好连接
2. 查询缓存
开启了查询缓存,那么在select查询语句过来的时候会先到查询缓存看看之前是不是执行过这条语句,查询缓存存储的数据是以键值对的形式进行存储(类似与map),key就是查询的sql语句,value是查询的结果。由于查询缓存这一块不是那么重要而且MySQL 8.0(命中率太低)之后也删除了。
3. 分析器
对客户端传来的 sql 进行分析,包括预处理与解析过程,并进行关键词的提取、解析,并组成一个解析树,主要提取如 select/update/delete/or/in/where/group by/having/count/limit等这样的关键词
select *? from user where id = 1
例如这样的一条语句,在分析器中就通过语义规则器将select from where这些关键词提取和匹配出来,将用户的匹配字段和自定义语句识别出来,这个阶段也会做一些校验,比如校验user表是否存在,表中是否有id字段等
4. 优化器
经过前面的步骤,数据库已经知道SQL可以执行了,接下来优化器会根据执行计划选择最优的选择,匹配合适的索引,选择最佳的方案。
5. 执行器
执行器会调用对应的存储引擎执行 sql。主流的存储引擎是MyISAM 和 Innodb。
?
注:存储引擎就是为如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!