MySQL
凭借着它还不错的性能、还不错的稳定性常年稳居老二宝座,当然最大的优势就是它不要钱,还开源,这让它成为大部分中小型公司,尤其是互联网公司首选的数据库(近年来越来越多的大公司也在尝试将业务转移到这种不要钱的数据库上来)。
越来越多的DBA
和后端同学在工作中少不了和MySQL
打交道,为什么这个SQL执行的这么慢?为什么明明我建了索引但查询计划显示没用?为什么我的IN
查询里的参数一多就不使用索引了?为什么突然我的数据就成了乱码?到底应不应该使用连接查询?吧啦吧啦一大堆。在面试中MySQL
的一些知识更成为躲不过的问题,比如索引结构、MVCC、隔离级别的实现、锁的使用等等等等都成为了面试考题重灾区。
我们相信,只要向大家有节奏的展示足够多的技术细节,那么整个学习过程将会变得流畅平滑,MySQL
的面纱也会慢慢的被摘下。所以我们在后续介绍MySQL
运行过程中需要用到的各种结构时会尽力向大家解释清楚每个字节都是干嘛用的,某几部分组合起来会有什么样的效果等等。
对于一些比较复杂的概念时,我们不准备使用概念先行方式进行讲解,也就是先给大家提出一个概念,然后介绍这个概念有什么什么属性,每个属性又有什么什么特点,每个特点又有什么什么的用法。我们在解释比较复杂的问题时会按照下边的套路出发:
- 我们遇到了什么问题;
- 为了解决问题提出了什么概念;
- 这个概念在MySQL中又有哪些需要注意的地方。
也就是:不先讲是什么,先讲为什么。