大纲视图
MYSQL基本架构图
连接器的作用是什么?
连接器负责跟客户端建立连接、获取权限、维持连接
查询缓存是什么?什么时候会查询缓存?什么时候会清除缓存?
MYSQL拿到一个SELECT查询语句后会先到查询缓存里看看之前是不是执行过这个语句,之前执行过的语句会以key-value形式缓存在内存,key是查询的语句,value是查询到的结果。如果能够在缓存中找到这个key,那么对应的value会直接返回给客户端。
查询缓存的失效非常频繁,只要对一个表有更新,这个表上的所有缓存都将被清除。MYSQL8.0已移除查询缓存
分析器的作用是什么?
分析器主要是对SQL语句做解析,会根据词法分析的结果判断该条SQL语句的语法是否符合MYSQL规范,以及表和表字段是否存在
优化器的作用是什么?
优化器的作用是MYSQL内部对语句作出的优化,例如有多个索引时决定使用哪个索引,或者一条语句有多个表join时决定各个 表的连接顺序。
执行器执行 SQL的流程是怎样的?
执行器的作用是操作引擎,获取返回结果。
执行流程如下:
- 调用 InnoDB 引擎接口取这个表的第一行,判断是否满足条件,如果不是则跳过,如果是则将这行存在结果集中;
- 调用引擎接口取“下一行”,重复相同的判断逻辑,直到取到这个表的最后一行。
- 执行器将上述遍历过程中所有满足条件的行组成的记录集作为结果集返回给客户端。