mysql的sql语句执行流程

1、client和server建立连接,client发送sql至server(对应连接器这一过程)

成都创新互联专注于正安网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供正安营销型网站建设,正安网站制作、正安网页设计、正安网站官网定制、微信小程序开发服务,打造正安网络公司原创品牌,更为您提供正安网站排名全网营销落地服务。

2、server如果在查询缓存中发现了该sql,则直接使用查询缓存的结果返回给client,如果查询缓存中没有,则进入下面的步骤(对应查询缓存这一过程,8.0这一过程已经不存在了,8.0完全抛弃了这个功能)

3、server对sql进行语法分析,识别出sql里面的字符串是否符合标准,比如select关键字不能写错(对应分析器这一过程)

4、server对sql进行语义分析,识别出sql里面的字符串的具体意思是什么,比如T1是表名,C1是列名(对应分析器这一过程。3、4步其实解析的过程,这个解析的过程是分析器的工作不是优化器的工作)

5、server确定sql的执行路径,比如走索引还是全表,多表连接时哪张表先走哪张表后走,当你的where条件的可读性和效率有冲突时MySQL内部还会自动进行优化,也就是大家理解的重写where子句(对应优化器这一过程)

6、server对执行sql的用户进行权限检查,比如对表是否有权限执行(对应执行器这一过程)

7、server执行该sql语句,发送结果给client(对应执行器这一过程)

连接器-->查询缓存-->分析器-->优化器-->执行器

如果表 T1 中没有字段 C1,而执行select * from T1 where C1=1会报错不存在C1这个列,这个过程对应上面第4个过程,对应分析器这一过程

如果用户对T1表没有权限,而执行select * from T1 where C1=1会报错对表T1没有权限,这个过程对应上面第6个过程,对应执行器这一过程


网站标题:mysql的sql语句执行流程
标题链接:http://pwwzsj.com/article/pgsdoc.html