提纲:

🔥MySQL

  • MySQL结构 &SQL语句执行流程

  • 三范式

  • InnoDB & MyISAM

🎈面试八股真题——在【Java八股-第二十八期】优化 中总结

一、MySQL

1. MySQL结构 &SQL语句执行流程

  • 1、若是 Select 语句,先从查询缓存中查看是否存在同样的语句的查询结果缓存,若有,直接返回

  • 2、由查询分析器解析查询语句

  • 3、由优化器进行查询语句优化,主要是选择是否使用索引,以及使用哪一个索引

  • 4、由执行器使用接口调用存储引擎进行存储,MySQL 中存储引擎是插件式的,根据用户选择使用具体引擎,默认使用 InnoDB 引擎

  • 5、在 InnoDB 引擎中,首先查看缓存池中是否存在 sql 语句对应的缓存数据,若没有,从数据库加载

  • 6、执行增删改语句时,直接在缓存中进行修改

  • 7、因为在缓存中修改的数据会由于 MySQL 主机宕机而消失,是脏数据,InnoDB 引擎使用 redo-log 来保证事务的持久性,在对缓存中数据进行修改时,还会将修改后的数据写入一个 redo-log Buffer 缓存中,并定时刷入磁盘中的 redo-log,在 MySQL 宕机重启后,就会通过 redo-log 来恢复已经提交了的修改事务

  • 8、InnoDB 引擎还通过 undo-log 中的版本链来实现事务的回滚以及 MVCC 的 read-view,因