当前位置:   article > 正文

mysql sql执行过程_MySql一条语句执行的过程

mysql执行一条语句的全过程

1dee89d5848f

连接层(接收语句,返回结果)

首先需要先连接到数据库,因为Linux本身不能执行sql语句

1、提供连接协议:socket、TCP/IP

2、验证用户名密码合法性,匹配专门的授权表

3、派生一个专用的连接线程用于接收SQL语句和返回结果

忘记密码的那两个参数,说白了就是在连接层动手脚

--skip-grant-tables:忽略授权表

--skip-networking:忽略TCP/IP登录,只能本地socket登录

SQL层(处理语句,提供查询)

1、验证SQL语法和SQL_MODE(sql_mode是一组语法校验规则)

2、验证语义(哪一类的语句?DQL/DDL/DML/DCL)

3、验证权限(是否有权限操作这个库和表?)

4、解析器进行语句的解析

5、优化器(各种算法,用最小的代价制定执行计划)

6、执行器按照优化器选择的执行计划,执行SQL语句

7、对于执行一条语句多次不会每次都执行这个过程,通过query cache来提升查询的速度(默认是不开启的)。一般也不开,会用redis代替这个功能。验证语句是否相同是先将SQL语句哈希,算出来的值也叫SQL_ID,比较SQL_ID是否一致,就能比较出2条语句是否是同一内容。

8、记录操作日志(binlog),用于提供数据库恢复的重要依据。也是默认关闭的

存储引擎层(拿取数据)

真正和磁盘交互的层

根据SQL层提供的取数据的方法,拿到数据。

返回给SQL层,SQL层把二进制数据结构化成表。同时SQL层会把结果缓存到缓存层。(缓存有可能是query cache或者redis或者memcached)

再返回给连接层返回给用户结果。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/人工智能uu/article/detail/827326?site=
推荐阅读
相关标签
  

闽ICP备14008679号