MySql-一条查询SQL语句的执行

MySql-一条查询SQL语句的执行

  你好! 感谢您花费几分钟的时间阅读本篇博客,本人写的是方便学习与记录,要是有错误的地方请您指出,感谢

1 缓存

  这个的缓存不是指Redis,或者Mybatis的缓存我们常见的缓存,其实MySQL自带了缓存模块,但是我们几乎从来没有用过他,甚至在MySQL8.0直接就给去掉了,所以一定有他的局限性,大家可以查阅一下,但是确实是存在的。如果开启的话,所以一个查询SQL先会查询缓存

2 解析

  我们没有使用缓存的话,就会跳过缓存的模块,那么接下来我们就应该通过MySQL解析器分析sql的语法与词法是否合乎规范,并且会按照Mysql的语法规则,根据SQL语句生成解析树
当我们解析完成之后,并不知道该sql查询的表名或者字段是否存在,所以MySQL种的预处理器会检查解析树表名与列名是否正确,之后得到一个新的解析树。

3 优化

  查询优化器的目的就是根据解析树生成不同的执行计划,然后选择一种最优的执行计划,MySQL 里面使用的是基于开销(cost)的优化器,那种执行计划开销最小,就用哪种。

4 执行存储引擎,返回结果

  得到一个执行计划之后,我们的sql语句是不是终于可以执行了,那么又又有新的问题了,执行计划是谁,在哪执行,谁去执行?
  数据库中的一个表,我们可以把他理解成一个Excel电子表格的形式,所以我们的表在存储数据的同时,还要组织数据的存储结构,这个结构就是我们的存储引擎决定的。
存储引擎我们要注意,是表的类型而非数据库的类型,一个数据库当中可以有多种表的存储引擎
MySql-一条查询SQL语句的执行_第1张图片 如图,在设计表种我们可以修改表的存储引擎


然后我们通过执行存储引擎 ,获取数据,返回到客户端

你可能感兴趣的:(一起探究,mysql,sql,数据库)