《MySQL是怎样运行的:从根儿上理解MySQL》出版啦!

27,665 阅读10分钟

等了一年又一年,千呼万唤始出来,《MySQL是怎样运行的:从根儿上理解MySQL》这本书终于面世啦!赶紧先瞅瞅它长啥样吧:

看到封面后,很多小伙伴内心肯定飘起了这样的声音:“额~ 这么卡哇伊的封面,这是给小孩儿看的吗?”其实这么说也没问题,如果小孩儿都能看懂的话,大人再看不懂岂不是更不好意思哈~

小孩子从小就有一个疑惑:为什么我在接触一门新课程的时候总是觉得它很高大上,并且学的过程也比较痛苦,但是当我真正学会它的时候,又会觉得这玩意儿也就那样,没什么了不起的,但是为啥学的时候就不能很轻松呢?有时候我们走了很久,却忘记自己为什么出发,类似的,大人长大后就忘记了自己作为小孩时的样子,一个满腹经纶的技术专家对于初学者所面临的问题往往是无法切身体会的,所以我决定以小孩子(初学者)的角度去创作一些技术书籍,从用户的角度出发去解决同志们在学习过程中面临的痛点,这也是“小孩子4919”笔名的由来。

为什么要写这本书

作为一名智商平平的程序员,在日常学习过程中经常会遇到两种贼尴尬的情况:

  • 学习资料极其晦涩,看起来都是些高大上的知识,看着看着就困了;
  • 很多通俗易懂的资料感觉就是小儿科,看完了跟没看差不多。

而广大的人民群众其实需要经历一个由浅入深的平缓学习曲线,而且这个学习的过程不至于特别的无聊。我灵机一动,这天底下和我一样的同学肯定有很多很多,如果我能把那些晦涩难懂的知识按照尊重学习者认知规律的方式表达出来,那岂不是一件极其有意义的事情吗?毕竟我一个人敲代码创造的价值和让成千上万的人快速、友好的学会一门知识所创造的价值是远远不能比的。当然,这只是一个美好的想法,做这个事情是需要投入巨大的精力的。于是我辞掉了工作,放弃了周末,决心花上几年时间来干这件能让我天天打鸡血的工作。

写作这本书的时间主要是花在下边这两个方面:

  • 自己搞清楚MySQL到底是怎样运行的,这个过程就是不断的研究源码,参考各种书籍和资料;
  • 思考如何把我已经知道的知识表达出来。这个过程就是我不停的在地上走来走去,梳理知识结构,斟酌用词用句,不停的将已经写好的文章推倒重来,只是想给大家一个不错的用户体验。

这两个方面用的时间基本上是各占一半。

本书有什么特色

这并不是一本传统意义上的技术图书,大致有以下特点。

  • 全文用大白话写成,而且有的地方在“扯犊子”,就像是有个人在跟同学们唠嗑一样,希望各位看起来别犯困。
  • 从初学者角度出发,尝试避免用一个没学过的概念去介绍另一个新概念。
  • 语言在图片面前一直都是很苍白的,所以我画了很多图,各位慢慢看。
  • 魔鬼藏在细节中。以往很多同学在读书的时候感到困惑,是因为细节给出的不够多,导致大家伙瞎猜。
  • 层层铺垫的结构划分。本书覆盖的内容形成了一个闭环,希望大家在读完书后能有一个看完了一个完整故事的感觉。
  • 等等等等,我一时想不起来了。

本书写了什么

虽然本书在某些方面看起来不是那么严肃,但是的确是一本专业技术图书,致力于覆盖大家工作和面试过程中最常遇到的一些关于MySQL的核心概念。本书共划分为4个部分,双色印刷(注意是双色印刷,很漂亮滴)正文约450页。各部分简介如下。

  • 第1部分(第1章~第3章):以只会写增删改查语句的小白身份重新审视MySQL到底是个什么东西,介绍MySQL的服务器程序和客户端程序有哪些、启动选项和系统变量以及字符集的一些事情。
  • 第2部分(第4章~第9章):唠叨记录、页面、索引、表空间的结构和用法。第2部分是全篇的基础,后边的章节都依赖于这些结构。
  • 第3部分(第10章~第17章):介绍同学们工作中经常遇到的查询优化问题,比如单表查询是如何执行的,连接查询是怎么执行的,MySQL基于成本和规则的优化是个什么东西。本部分还十分详细的介绍如何查看Explain语句的执行结果。
  • 第4部分(第18章~第22章):介绍为什么会有事务的概念,以及MySQL是如何实现事务的,其中包括redo日志、undo日志、MVCC、各种锁的细节等。

本书的目录如下:

写作本书时参考的MySQL源码版本是5.7.22,不过书中的绝大部分知识和MySQL的版本没有什么特别大的关系,在某些与特定版本相关的地方我也有明显的强调。

本书读者对象

大家需要注意的是,本书并不是一本数据库入门图书,因此大家需要知道增删改查是啥意思,并且能用SQL语句写出来。当然并不要求各位知道的太多,甚至不知道连接的语法都可以。另外,读者应该掌握一些计算机基础知识,比方说什么是位、什么是字节、进制转换等。本书大致适合下边这些读者来阅读:

  • 刚刚学完SQL基础的同学;
  • 被数据库问题折磨的求职者;
  • 天天被DBA逼着优化SQL的业务开发小伙伴;
  • 菜鸟DBA和不是非常菜的DBA小伙伴;
  • 对MySQL内核有强烈兴趣但一看源码就发懵的小伙伴。

本书与掘金小册的关系

在2018年3月,我在掘金平台发布了一本名为《MySQL是怎样运行的:从根儿上理解MySQL》的小册,这本小册就是本书的初稿,本书的章节结构和小册的基本一致。但是这并不意味着本书就是单纯的将小册内容纸质化,纸质书在小册的基础上做了许多改进:

  • 我们针对小册建立了许多微信答疑群,在距初稿发布的这两年半时间内,有成百上千的同学针对小册中比较难以理解的地方提出了五花八门的问题,纸质书针对这些问题优化了一下原先的表达方式,使其更容易理解。

  • 针对纸质书的第3章、第7章、第10章、第21章、第22章的绝大部分内容进行了重写,也就是与小册完全不同。这主要是因为我觉得小册中对应的章节表达内容太浅或者太笼统,细节给出的不太够,可能会有歧义,反正读着有一些怪,所以不如将它们彻头彻尾的进行重写,以达到更好的效果。

  • 每一章节都逐字逐句进行优化,增加若干新的细节,删除不必要的段落,让用户体验更佳。

总而言之,小册是本书的前身,相当于前一个版本,本书是小册的升级版,相信即使是读过小册的同学,再读本书也会有很多新的收获的~

售后服务

相信大部分同学买书肯定不单单的只是想买那几页纸(当然除去部分买了收藏的同学),我们买书只是想买到书里所蕴藏的知识,如果获取不到知识的话,那这本书和厕纸有啥两样(可能不如厕纸柔软~)?

虽然我尽了很大的努力来让进阶MySQL的这个过程变得更容易些,但终究不能满足所有人的需求,有很多同学在阅读过程中肯定会产生这样那样的疑惑,我知道在阅读技术图书的过程中遇到了疑惑而不得解是一种多么大的折磨(在写作本书过程中经常因为一个想不通的小问题而痛苦几天甚至十几天),如果大家在阅读本书的过程中遇到了什么不得解的困惑,可以参照书中给出的联系方式加入我们的微信答疑群提问。这里需要特别注意一下,需要提问的同学一定要先搞清楚自己到底哪里不清楚,然后用通顺的语句把它表达出来。以往很多同学的问题都是含糊不清,表达不通顺,这样的问题让人看了要发疯,所以为了我们双方的方便,提问前请认真思考一下。

关于答疑服务,购买过我的掘金小册的同学很有发言权(大家可以咨询一下身边买过我的小册的同学)。另外,我只负责回答关于本书的问题,其他问题请和其他同学讨论(一是作者很可能也不会,二是作者精力有限,望理解)。

如何购买本书

本书定价99元(这是一本正文达450多页,并且双色印刷的图书),但是作为小青蛙的粉丝,不要99,也不要79,当然也不能卖九块九(那我就太亏了),扫描下方二维码即可半价购买本书,也就是可以49.5购买本书(一定要通过下方二维码购买喔,这样作者还能多收入几块钱)。

使用京东的同学可以点击链接:u.jd.com/tuL96S0 或者扫描下方的二维码:

使用当当的同学可以点击链接:u.dangdang.com/H8quW 或者扫描下方的二维码:

大家的支持是小孩子持续创作的动力(毕竟小孩子不是富二代,也得挣钱吃饭),小孩子一定会创作更多通俗易懂的技术书籍来让大家的学习过程更轻松、更快速。剧透一下,下一本技术书籍《计算机是怎样运行的》正在来的路上,只要你懂初高中的电学,就可以轻松“制作”一台计算机,敬请期待~