昨天跟大家讲了MySQL的基础架构(链接:MySQL的基础架构),今天讲一讲我们的高频面试题MySQL中SQL语句的执行流程。
建议看完 MySQL的基础架构 再来看这篇。
SQL 语句分为查询语句与更新语句。更新语句就是增加、删除、修改。本文从这两种不同的语句讲述SQL语句的执行流程。
我们先来看看MySQL的基础架构(如下图),各司其职。
正如图所示,查询语句的执行流程如下
select * from students where name = '张三'
更新语句的前程跟查询的一样,不同的是多了日志模块的使用。MySQL 的 binglog,与存储引擎 Innodb 自带的 redo log。MySQL 5.5之后默认是使用 Innodb 当做存储引擎。
update students set name = '李四' where name = '张三'
问:为什么 redo log 有两种状态呢?
答:为了防止在修改中数据库崩溃的时候可以恢复数据
问:binglog 起到什么作用?
答:binglog 是归档日志。是MySQL自带的,而存储引擎 Innodb 自带的 redo log。redo log 是支持事务的,也可以根据它来恢复数据。
查询语句与更新语句前面都是相同,只是更新语句需要加入日志模块,是为了能够恢复数据记录等等的作用,涉及到 Innodb 的redo log。这个是面试的高频考点,大家要多加熟悉。
有启发点个赞
预计下篇分享:MySQL 的存储引擎
本篇参考:JavaGuide
我是小辉,正在进行 Java 实习的 24 届应届毕业生。持续分享,包括但不限于技术文章。全网同名…