一条SQL查询语句是如何执行的?
本文插图
MySQL 都有哪些零件?
- 连接器:管理连接 , 权限验证 。
- 分析器:词法分析 , 语法分析 。
- 优化器:执行计划生成 , 索引选择 。
- 执行器:操作存储引擎 , 返回结果 。
- 存储引擎:存储数据 , 提供读写接口 。
第一步 , 我们会先连接到 MySQL 数据库 , 此时就是连接上连接器 。 连接器负责和客户建立连接 , 获取权限 , 维持和管理连接 。
mysql -h $ip -u root -p查询缓存
建立好连接之后 , 我们就可以使用 SELECT 语句了 , 执行逻辑就会来到第二步:查询缓存 。 MySQL 会现在查询缓存看看之前是不是执行过这条语句 , 如果有就直接返回 。 在 MySQL 8.0 之后 , 此模块已被移除 。
分析器
如果没有查询缓存 , 从这里 MySQL 就要开始分析我们要干什么 , 需要对我们编写 SQL 语句进行分析 。 分析器会先做词法分析 , 识别出字符串以及它代表的含义 。 然后再进行语法分析 , 判断我们编写的 SQL 语句有没有错误 , 如果有错误就会抛出错误 。
【一条SQL查询语句是如何执行的?】优化器
经过了分析器之后 , MySQL 知道你要干什么了 , 此时优化器会根据表结构以及语句目的来决定使用哪个方案 。
执行器
MySQL 通过分析器知道了我们要做什么 , 通过优化器知道了该怎么做效率最高 。 于是就可以进入执行器 , 真正执行 SQL 语句了 。
select * from users where name = ‘operator'假设 users 表中 , name 字段上没有建立索引 , 那么执行器调用 InnoDB 引擎接口取第一行 , 判断 name 是不是等于 operator , 如不是则跳过 , 如果是就放在结果集中 。 然后再调用引擎接口取下一行 , 重复相同的逻辑判断 , 直到取到这个表的最后一行 。 最后将结果集返回给客户端 。
作者:早已延伸链接:https://juejin.im/post/5efc46525188252e893a0581
- 环球网|深夜,脚下闪过一条1米多长眼镜蛇!被吓出一身冷汗…
- 小谢爱八卦|助理握住于小彤手腕,随后陈小纭发了一条动态,头上的发箍颜色亮了
- 环球焦点视野|自南向北注入地中海,尼罗河是一条流经非洲东部与北部的河流
- 国家|《国家相册》:山间一条路
- 不赴时光|街拍:身姿曼妙的小姐姐,一条打底裤搭配迷人的抹胸,女人味十足
- 新华社|《国家相册》:山间一条路
- 今日事|A字裙不能遮肉,百褶裙不够优雅,不如来一条:伞裙?显瘦又高级
- 床底钻进一条蛇,一住就是三年!男子却说:不想它离开…
- 检测|朝阳区核酸检测查询系统上线可自行打印检测报告
- 洁丽雅:每台纺机每天多花5元钱效率增15%,5G联网打通了一条产业链