书籍介绍
MySQL
凭借着它还不错的性能、还不错的稳定性常年稳居老二宝座,当然最大的优势就是它不要钱,还开源,这让它成为大部分中小型公司,尤其是互联网公司首选的数据库(近年来越来越多的大公司也在尝试将业务转移到这种不要钱的数据库上来)。
越来越多的DBA
和后端同学在工作中少不了和MySQL
打交道,为什么这个SQL执行的这么慢?为什么明明我建了索引但查询计划显示没用?为什么我的IN
查询里的参数一多就不使用索引了?为什么突然我的数据就成了乱码?到底应不应该使用连接查询?吧啦吧啦一大堆。在面试中MySQL
的一些知识更成为躲不过的问题,比如索引结构、MVCC
、隔离级别的实现、锁的使用等等等等都成为了面试考题重灾区。
其实对于工程技术人员来说,大部分接触的所谓技术
是没那么需要智商的,只是需要讲解这些技术的同学稍微切换一个角度,切换到小白的角度而不是站在一个上帝视角去讲述问题,那些看起来非常高深复杂
的问题其实都是为了一个非常简单的初衷而不得不采用的设计。我的任务就是带着大家从非常简单的问题出发,在解决问题的路上我们会遇到一些麻烦,由这些麻烦我们会很自然的引入一些新的概念,我会不断的向大家强化这些新概念,当我确保大家已经完全掌握了这些新概念后,会基于这些新概念再引入一些更为复杂的问题。高楼大厦虽然雄伟,解构之后不过是钢筋水泥。当然这个过程我会适当的给大家加点儿料,扯扯犊子,让大家像读小说一样接受这些MySQL的核心概念。
本书目录
- 万里长征第一步(非常重要!非常重要!非常重要!此处省略一万遍) —— 如何愉快的阅读本小册
- 装作自己是个小白 —— 重新认识MySQL
- MySQL的调控按钮 —— 启动选项和系统变量
- 乱码的前世今生 —— 字符集和比较规则
- 从一条记录说起—— InnoDB 记录结构
- 盛放记录的大盒子 —— InnoDB 数据页结构
- 快速查询的秘籍 —— B+ 树索引
- 好东西也得先学会怎么用 —— B+ 树索引的使用
- 数据的家 —— MySQL 的数据目录
- 存放页面的大池子 —— InnoDB 的表空间
- 条条大路通罗马 —— 单表访问方法
- 两个表的亲密接触 —— 连接的原理
- 谁最便宜就选谁 —— MySQL 基于成本的优化
- 兵马未动,粮草先行 —— InnoDB 统计数据是如何收集的
- 不好看就要多整容 —— MySQL 基于规则的优化(内含关于子查询优化二三事儿)
- 查询优化的百科全书 —— Explain 详解(上)
- 查询优化的百科全书 —— Explain 详解(下)
- 神兵利器 —— optimizer trace 的神奇功效
- 调节磁盘和CPU的矛盾 —— InnoDB 的 Buffer Pool
- 从猫爷被杀说起 —— 事务简介
- 说过的话就一定要办到 —— redo 日志(上)
- 说过的话就一定要办到 —— redo 日志(下)
- 后悔了怎么办 —— undo 日志 (上)
- 后悔了怎么办 —— undo 日志 (下)
- 一条记录的多幅面孔 —— 事务的隔离级别与MVCC
- 工作面试老大难 —— 锁
- 写作本书时用到的一些重要的参考资料
- 小册答疑指南
- 后记 —— 关于写技术书籍/文章的四个指导原则
你会学到什么?
- MySQL 的一些基本概念;
- 如何处理使用 MySQL 过程中的乱码问题;
- 从根儿上理解 InnoDB 存储引擎是如何存储记录、数据页,以及由页作为节点组成的B+树索引的原理;
- 理解 InnoDB 存储引擎的表空间概念,知道 InnoDB 是如何管理段、区、页这些玩意儿以及 InnoDB 的数据字典;
- 理解 MySQL 是如何执行单表查询、如何执行连接查询;
- 理解 MySQL 基于代价的优化和基于规则的优化到底是啥意思;
- 知道如何查看自己写的查询语句是好是坏,学会使用optimizer tracer;
- 理解为什么需要事务以及它的基本概念;
- redo 和 undo 日志的作用以及在 MySQL 中这些日志的细节;
- 理解并发带来的各种问题以及 MySQL 中使用锁的各种细节;
- 理解学习的快乐,希望各位看完本小册就像是读完一本小说一样畅快淋漓。
适宜人群
- 刚刚学完 SQL 基础的学生同学们;
- 被数据库问题折磨的求职者们;
- 天天被 DBA 逼着优化 SQL 的业务开发小伙伴;
- 菜鸟 DBA 和不是非常菜的 DBA 小伙伴;
- 对 MySQL 内核有强烈兴趣但看源码一脸懵逼的小伙伴。
作者介绍
小孩子:前在线教育公司「跟谁学」后端工程师,公众号「我们都是小青蛙」作者,喜欢研究源码,觉得把复杂的问题讲清楚是一件很牛逼的事儿。