提起MySQL,其实网上已经有一大把教程了,为什么我还要写这篇文章呢,大概是因为网上很多网站都是比较零散,而且描述不够直观,不能系统对MySQL相关知识有一个系统的学习,导致不能形成知识体系。为此我撰写了这篇文章,试图让这些底层架构相关知识更加直观易懂:
- 尽量以
图文
的方式描述技术原理; - 涉及到关键的技术,附加
官网
或者技术书籍
来源,方便大家进一步扩展学习; - 涉及到的
背景知识
尽可能做一个交代,比如讨论到log buffer的刷盘方式,延伸一下IO写磁盘相关知识点。
好了,MySQL从不会到精通系列马上就要开始了(看完之后还是不会的话…请忽略这句话)。
可能会有同学问:为啥不直接学更加先进的TiDB,或者是强大的OceanBase。
其实,MySQL作为老牌的应用场景广泛的关系型开源数据库,其底层架构是很值得我们学习的,吸收其设计精华,那么我们在平时的方案设计工作中也可以借鉴,如果项目中用的是MySQL,那么就能够把数据库用的更好了,了解了MySQL底层的执行原理,对于调优工作也是有莫大帮助的。本专栏我重点讲述MySQL底层架构,涉及到:
- 内存结构:
buffer pool
、log buffer
、change buffer
,buffer pool的页淘汰机制是怎样的; - 磁盘结构:
系统表空间
、独立表空间
、通用表空间
、undo表空间
、redo log
; - 以及
IO
相关底层原理、查询SQL执行流程
、数据页结构
和行结构
描述、聚集索引
和辅助索引
的底层数据组织方式、MVCC
多版本并发控制的底层实现原理,以及可重复读
、读已提交
是怎么通过MVCC实现的。
另外,我们在SQL原理篇中会带您从SQL的执行原理洞悉调优的本质。