mysql处理查询请求的步骤
服务端处理客户端的查询请求大致需要三个步骤:
- 连接管理
- 客户端连接服务端时,服务端会为其分配一个线程,客户端断开连接不会回收线程(避免频繁创建销毁的性能问题),服务端一直等待客户端发来消息(文本消息)
- 解析与优化
- 查询缓存(mysql8.0之后删除了查询缓存)
- mysql处理查询请求的时候会把结果缓存,不缓存的情况有(1,任何字符的不同2,调用了系统函数 自定义函数/变量3,使用了系统表)
- 缓存失效:对表的结构和数据进行了修改之后,缓存会失效,并从高速缓存删除
- 语法解析
- 对文本进行解析校验语法
- 查询优化
- 对我们的语句进行一些优化,生成一个执行计划使用哪些索引,表的连接顺序等等
- 查询缓存(mysql8.0之后删除了查询缓存)
- 存储引擎
- 在完成了查询优化之后,只需按照执行计划调用底层存储引擎提供的api,返回数据给客户端即可
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!