一条查询sql执行流程

连接器

  我们和数据库进行交互的话,首先要进行连接。服务端校验账号密码无误后,就意味着一个用户成功建立连接,可以进行各种操作了。在连接的过程中,账号权限发生了改变也是感知不到的,必须重新连接才能获取账号最新权限。

缓存

  建立完连接后,现在执行select就来到了第二步:查询缓存,就是以sql为key,去内存中查询结果,如果能够在缓存中找到 value,就会直接返回给客户端。如果不在缓存中,就继续往后执行,然后将结果存在内存中。不过考虑到时效性,查询mysql缓存并不是一个比较好的方案,所以在mysql8.0+直接把 缓存模板 给删掉了。

解析器

  如果没有命中索引,就要开始真正执行语句了。首先会讲我们输入的字符串进行“词法解析” 识别出 表名和字段 ;然后进行 “语法分析” 看看是否符合sql语法规范。

优化器

  前面识别完语法后,现在mysql就要对你的sql进行预处理了,比如你的sql有多个索引,用哪个比较好;比如关联查询表的连接顺序、以哪个做驱动表比较好。

执行器

  现在离正真执行sql就差临门一脚了。他会判断你对表有没有操作权限。然后权限就直接返回异常提示;有权限就会交给引擎去执行了。

 

posted @   吴磊的  阅读(226)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
//生成目录索引列表
点击右上角即可分享
微信分享提示