面试精选

MySQL基础架构

2021-03-21  本文已影响0人  传达室马大爷

MySQL基础架构示意图

image.png

有些时候 MySQL 占用内存涨得特别快,这是因为 MySQL 在执行过程中临时使用的内存是管理在连接对象里面的。这些资源会在连接断开的时候才释放。所以如果长连接累积下来,可能导致内存占用太大,被系统强行杀掉(OOM),从现象看就是 MySQL 异常重启了。

一条查询SQL执行流程

第一步:与【连接器】创建连接

连接器校验客户端的用户名和密码以及所拥有的权限

第二步:查询缓存

之前查询的数据以key-value的形式存在缓存中,sql语句为key,查询结果集为value,如果有值校验权限后直接返回缓存结果,如果查不到缓存,则继续后面的执行阶段
大多数情况下不建议使用缓存,因为缓存失败特别频繁,表中只要有更新操作,则与这个表相关的缓存都会被清除,如果更新频繁的话缓存的命中率很低,对于那种更新不频繁,比如配置表可以使用缓存

第三步:分析器分析SQL语句

首先进行词法分析,识别出关键字、字段、表名、查询条件等
其次再进行语法分析,构建语法树,校验输入的SQL是否满足MYSQL语法

第四步:优化器对SQL进行优化

优化器在表有多条索引时,决定使用哪条索引,或者多表联合索引时决定各个表的索引执行顺序

第五步:执行器选择调用引擎查询结果

首先验证对表的执行权限,如果没有则直接返回权限错误
调用执行引擎接口查询数据并返回

一条更新语句执行流程

上一篇 下一篇

猜你喜欢

热点阅读