基础架构
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状态
⑤更新完成