数据库 MYSQL结构与Server组件分析

基础架构

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状态
⑤更新完成

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

魔幻音

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值