基础架构

Server层+存储引擎层

Server层组件

连接器

用于身份验证和权限限制。
用户登录时,连接器验证账户秘密、权限的内容,账号密码通过后,在权限表内查询用户权限,之后该连接的所有操作会依据此时获取的用户权限进行限制。

查询缓存

执行查询时,MYSQL会先在查询缓存里判断该查询是否执行过(缓存内以K-V存储),若查询过,直接将缓存结果发给客户端。

分析器

工作分两步:1.词法分析:提取语句中的关键词
2.语法分析:判断SQL语句是否符合语法

优化器

优化器将操作按其认为最优执行方案去执行
如多个索引时,应如何选择等
经过优化器,语句执行的方式就确定了

执行器

执行方式确定后,在执行器内先进行权限验证,验证通过,调用引擎接口进行结果获取

语句分析

依据上述Server层组件,将查询、更新语句逐层进行分析

查询

SELECT * FROM user WHERE age = 18 AND score > 60;
①查询缓存,该查询是否执行过(MYSQL8.0之前)
②查询权限是否满足条件
③分析器进行词法分析,提取出SELECT、user等关键词
查看拼写等是否有错误
④优化器确定执行方案:
a.先查询score再判断年龄
b.先判断年龄、再查询score
ab方案中选一个其认为最优方案执行
⑤执行器权限验证后,调用接口返回结果

更新

UPDATE user SET score='80' WHERE name='yi';
更新语句首先将查询一遍,且将记录入日志
①先按查询对name条目进行查询
②查询到的语句把score数据更改,并调用接口写入数据
InnoDB引擎将记录redo log,此时为prepare状态
③告知执行器执行完成,可随时提交事务
④执行器收到后记录binlog,再调用引擎接口进行提交,上述状态将改为commit状态
⑤更新完成


版权声明:本文为MagicSound原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/MagicSound/article/details/124837632