学习 MySQL 应该是对其核心机制的学习。

  1. 要了解引入此机制的目标;
  2. 学习机制的实现原理、实现细节;
  3. 更进一步,能自己模仿实现机制的 Demo;
  4. 再进一步,能根据需求修改相应的代码,实现定制。

# 功能

无论是想把 MySQL 这辆车开好、改造好还是学会自己造车,第一步肯定是得知道最简陋的车有哪几部分,怎么工作的。

首先得有个 SQL 翻译官,负责把可读性还不错的 SQL 转化为机器更喜欢的格式,Step by Step 的执行计划。

  • 执行器

然后执行的时候还要实现事务机制,保证满足事务隔离级别配置的隔离性。很好奇不同的事务隔离级别在实现上有多大差异。

  • MVCC

最后数据得落盘啊,内存数据和磁盘文件必须可以做到相互转化。

  • 存储
  • 缓冲区

# 性能

MySQL 最大的卖点还是“性能”,在保证以上功能正常、正确运行的基础上,需要通过各种优化尽可能提高执行效率。
比如可以给翻译官配备个“最强大脑”,变着花的翻译出机器更喜欢的语言。
事务机制的实现肯定也很讲究,具体有什么魔法值得好好看。
文件到内存也是一点点的扣性能,一个内存页也不想多读。

  • 优化器

# 可用性

功能有了、性能有了,就开始担心可用性了。
服务器挂了怎么办?
磁盘坏了怎么办?
用户误操作了怎么办?
没钱上不了高大上的技术方案怎么办?
……

  • 主备高可用