首先从结构入手,然后以查询和更新操作具体分析执行过程
MySQL的结构
MySQL的结构分两层:
Sever层和存储引擎。本文针对InnoDB引擎来分析。
Sever层
连接器
连接器的作用就是检测登陆。
检查账号密码,然后检查该用户的权限。作为此后该用户所有操作的权限依据。
注意:在修改某用户权限之后,需要重新连接才能生效。如不断开连接,权限依然是旧的。
查询缓存
在MySQL8.0以后移除。
跟cpu缓存类似,执行语句时,首先到缓存中查找,如果找到了,就在缓存中操作,同步更新到数据库。数据库的修改在缓存中也会一起更新,保证一致。
为什么不用呢,因为在实际应用中,MySQL缓存失效非常频繁。后来就不再使用了。
分析器
分析器有两步操作,来检查语句是否合理,以及语句是干什么的。
- 词法检查。这一步会检查语句中的关键字,包括表名、列名、select、查询条件等。
- 语法检查。检查语句是否符合语法规定。
优化器
优化器是让MySQL以他认为的最优方式去执行。比如多个索引的时候该如何选择索引,多表查询的时候如何选择关联顺序等。
经过优化器之后,一条SQL语句具体应该如何执行,就已经确定了。
执行器
第一步:校验用户权限,即利用到了连接器查询出的用户权限。
没有的话会返回错误信息,如果权限允许,则调用引擎的接口,返回接口执行的结果。
早睡早起,注意身体。早起之王祝你风生水起!