每日一博 | 3000 帧动画图解 MySQL 为什么需要 binlog、redo log 和 undo log
> 全文建立在MySQL的存储引擎为InnoDB的基础上 先看一条SQL如何入库的: 这是一条很简单的更新SQL,从MySQL服务端接收到SQL到落盘,先后经过了MySQL Server层和InnoDB存储引擎。 Server层就像一个产品经理,分析客户的需求,并给出实现需求的方案。 InnoDB就像一个基层程序员,实现产品经理给出的具体方案。 在MySQL”分析需求,实现方案“的过程中,还夹杂着内存操作和磁盘操作,以及记录各种日志。 他们到底有什么用处?他们之间到底怎么配合的?MySQL又为什么要分层呢?InnoDB里面的那一块Buffer Pool又是什么? 我们慢慢分析。 分层结构 MySQL为什么要分为Server层和存储引擎两层呢? 这个问题官方也没有给出明确的答案,但是也不难猜,简单来说就是为了“解耦”。 Server层和存储引擎各司其职,分工明确,用户可以根据不同的需求去使用合适的存储引擎,多好的设计,对不对? 后来的发展也验证了“分层设计”的优越性:MySQL最初搭载的存储引擎是自研的只支持简单查询的MyISAM的前身ISAM,后来与Sleepycat合作研发了B...
