MySql教程

MySQL架构

本文主要是介绍MySQL架构,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.MySQL执行SQL语句的流程?

为了解决这个问题,先来看看MySQL的结构图吧

 

  • 连接池:提供多个客户端与服务端交互的线程。
  • SQL接口:接收SQL指令,返回查询结果。
  • 查询缓存:以key-value的方式缓存查询结果。
    • 该部分在MySQL8.0的时候去除掉了。
    • 在MySQL5.0默认开启:在配置文件中my.cnf进行配置:query_cache_type=0 //0代表关闭,1代表开启,2代表自定义。
      • 关于自定义:eg:select SQL_CACHE * from test where id=5  使用SQL_CACHE可以自定义的在sql声明使用查询缓存
    • 在MySQL8.0去除的原因:命中率太低,比如:多一个空格;执行now函数;对于更新压力大的数据库来说,经常缓存失效(更新数据后,缓存中的数据不可用)
  • 解析器:解析sql语句,生成一个"语法树"。(知道sql语句要做什么了)
    • 词法解析:解析sql语句中出现的字符串分别代表什么,比如select代表查询。
    • 语法解析:检查sql是否有语法错误,比如from写成rom等。
  • 查询优化器:一条查询可以有很多的执行方式,最后都返回相同的结果。优化器的作用就是找到其中"最好的执行计划",生成一个执行计划,交给"执行器"执行。比如是全文检索还是索引检索。
  • 可拔插存储引擎:与底层文件系统进行交互。存储引擎就是指的表的类型,接收上层传下来的命令,对表中的数据进行读写操作。

以上就是MySQL的整体架构,现在说说一条SQL语句的执行流程:

  • 连接池->SQL接口<=>查询缓存->解析器->查询优化器->执行器->存储引擎->文件系统->查询缓存->SQL接口
    • 补充:执行器:是基础服务组件中的一个,就是调用了执行引擎的api。
这篇关于MySQL架构的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!