Mysql之基础架构(一)

98 阅读2分钟

一直知道存储引擎这个概念,也了解过一些Innodb存储引擎的基本常识。但是不清楚存储引擎在整个Mysql中是个什么样的存在。而这个需要我们对mysql的基础架构有一个基本的认识。

mysql server的组成

  • server层

  • 连接器

  • 查询缓存

  • 分析器

  • 优化器

  • 执行器

  • 存储引擎层

如图:

各组件的作用

下述整个过程是以 **查询 **操作为例来讲的。

连接器

连接器负责处理client过来的连接,负责连接的建立,管理,用户的身份认证等。

查询缓存

连接器之后,对于查询请求,mysql会先走查询缓存。查询缓存以sql为key,返回的数据为value。如果缓存命中,则直接返回结果即可。

但是对于大部分的场景,我们不推荐使用查询缓存(默认是关闭的)。因为每一次insert或者update或者delete操作,导致某张表的数据发生了变化,都会导致查询缓存中对应的缓存数据被清理掉。因此,对于大部分的场景,查询缓存都是不能命中的,除非是一些基本没有修改行为的静态表。

分析器

如果查询缓存没有命中结果,接下来会进入分析器。

分析器包含词法分析和语法分析两块。前者主要是找出select等关键字以及表名,字段名等。后者主要是看sql的语法是否正确。

优化器

分析器之后是优化器。优化器会决定本次查询使用哪个索引,以及使用怎样的连表方式。

执行器

执行器负责执行优化器最终提供的方法。它是通过调用底层的存储引擎提供的数据查询的借口来实现的。

存储引擎

负责数据的存储,管理,查询等。对上层提供api服务。