提纲:
🔥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,因