温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Mysql的查询流程是怎样的

发布时间:2021-06-26 14:20:37 来源:亿速云 阅读:255 作者:chen 栏目:大数据

本篇内容介绍了“Mysql的查询流程是怎样的”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

Mysql查询流程图

Mysql的查询流程是怎样的

Mysql查询流程

处理连接

Mysql有三种连接方式,包括:

  • TCP/IP协议,远程连接使用,常规可采用ip端口建立连接。

  • 命名管道或共享内存,windows下可以采用命名管道或共享内存进行进程间通信方式,但要求服务器端与连接客服端在同一台机器。

  • Unix域套接字,类Unix操作系统可以使用Unix域套接字文件来进行进程间通信。

Mysql会限制同时连接服务器的数量,系统变量(后面我们在解释什么是系统变量、还有状态变量):max_connections表示的是最大连接数(默认151)。

查询缓存

Mysql8.0之前会对查询结果建立缓存,第二次使用同样的语句查询时会先看缓存里面有没有,如果有直接返回查询结果。

注:从MySQL 5.7.20开始,不推荐使用查询缓存,并在MySQL 8.0中删除(个人觉得,项目小并发量不是很高的可以用,但是并发量不高,相对来说缓不缓存其实影响也不大。但是项目大,数据变更频繁,缓存的开销就会很大,所以无论项目大小,保持关闭状态都是可以的)

缓存的命中条件

  • 前后查询语句必须一样,两个查询请求在任何字符上的不同(例如:空格、注释、大小写),都会导致缓存不命中。

  • 如果查询请求中包含某些系统函数、用户自定义变量和函数、一些系统表,如 mysql 、information_schema、 performance_schema 数据库中的表,那这个请求就不会被缓存。

缓存的删除条件

MySQL的缓存系统会监测涉及到的每张表,只要该表的结构或者数据被修改,如对该表使用了INSERT、 UPDATE、DELETE、TRUNCATE TABLE、ALTER TABLE、DROP TABLE或 DROP DATABASE语句,那使用该表的所有高速缓存查询都将变为无效并从高速缓存中删除。

语法解析

这一阶段主要是针对未命中缓存的查询语句进行语法检查,并且将查询语句中使用的表、各种查询条件都提取出来放到MySQL服务器内部使用的一些数据结构上来。

查询优化

mysql会针对我们书写的查询语句进行优化,生成一个执行计划(可以在查询语句前面加explain查看执行计划,具体执行计划怎么看,后面有空再总结吧),这个执行计划可以看到将使用哪些索引进行查询,表之间优化后的连接顺序等东西。

存储引擎执行

MySQL从2007年开始提供了插件式的存储引擎API,一般来说,连接管理、查询缓存、语法解析、查询优化这些并不涉及真实数据存储的功能我们称为MySQL server的功能,但真正执行查询的是存储引擎的功能,存储引擎真正执行数据存取操作,存储引擎有很多,都是基于mysql的API规范进行开发的。包括下列:

Mysql的查询流程是怎样的

其中,InnoDB和MyISAM是我们最常用的,Mysql的默认存储引擎是InnoDB。

“Mysql的查询流程是怎样的”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI