一、mysql如何执行一条sql语句?

mysql总结mysql总结

 ① 与mysql建立通信协议,并且确定用户的权限。

 ② 查询mysql的缓存,mysql8.0直接删除了缓存,命中缓存需要sql语句完成一致,并且表数据一致(数据更新会立马清空缓存)。

 ③ 解析器,语法解析,解析sql语句的语法,预处理,检查校验数据的正确性。

mysql总结

 ④ 查询优化器,根据解析树生成查询计划。详见 :https://blog.csdn.net/qq_16803227/article/details/106479505

       1> 主要是根据cpu成本和io成本选取最优索引。

       2> 优化连接查询主要是 inner join,会根据决定连接表的顺序。

 ⑤ 执行器,MySQL 通过分析器知道了你要做什么,通过优化器知道了该怎么做,得到了一个查询计划。于是就进入了执行器阶段,开始执行语句。

       1>开始执行的时候,要先判断一下你对这个表customer有没有执行查询的权限,如果没有,就会 返回没有权限的错误。 (在工程实现上,如果命中查询缓存,会在查询缓存返回结果的时候,做权限验证)

       2>如果有权限,就使用指定的存储引擎打开表开始查询。执行器会根据表的引擎定义,去使用这 个引擎提供的查询接口,提取数据。

二 mysql 的磁盘文件    MySQL在Linux中的数据索引文件和日志文件一般默认都在/var/lib/mysql目录下。

   ① 错误日志(errorlog)默认的错误日志名称:hostname.err。

   mysql总结

    ② 二进制日志(bin log) 默认是关闭的。

mysql总结

 ③  慢查询日志(slow query log)

mysql总结

④ 重做日志文件(redolog)回滚日志(undo log)详见:https://blog.csdn.net/qq_16803227/article/details/106627133

mysql总结mysql总结

 ⑤ 表结构文件: frm文件存储的是表的结构,ibd文件存储的是表的数据,存储引擎负责对表中数据的读取和写入,每个存储引擎会以自己的方式来保存表中的数据,在不同存储 引擎中数据存放的方式一般是不同的。 MySQL的数据文件存放在位置,可以通过参数datadir控制SHOW VARIABLES LIKE ‘%datadir%’;。 查看MySQL数据文件: InnoDB数据文件 ibd文件,使用独享表空间存储表数据和索引信息,一张表对应一个ibd文件。

mysql总结

mysql总结

三、MySQL的索引结构,详见 :https://blog.csdn.net/qq_16803227/article/details/104932442,索引优化详见:https://blog.csdn.net/qq_16803227/article/details/106479505

相关文章:

  • 2021-11-18
  • 2021-12-17
猜你喜欢
  • 2021-11-12
  • 2022-01-05
  • 2021-10-26
  • 2022-01-15
相关资源
相似解决方案