MySQL内核:InnoDB存储引擎 卷1
  • 推荐0
  • 收藏2
  • 浏览1.1K

MySQL内核:InnoDB存储引擎 卷1

姜承尧 (作者) 

  • 书  号:978-7-121-22908-4
  • 出版日期:2014-05-07
  • 页  数:360
  • 开  本:16(185*235)
  • 出版状态:上市销售
  • 维护人:孙学瑛
本书由资深MySQL专家亲自执笔,在以往出版的两本InnoDB介绍性图书的基础之上,更深入地介绍InnoDB存储引擎的内核,例如latch、B+树索引、事务、锁等,从源代码的角度深度解析了InnoDB的体系结构、实现原理、工作机制,并给出了大量最佳实践,希望通过本书帮助用户真正了解一个数据库存储引擎的开发。


资深专家撰写,国内外数据库专家联袂推荐,基于MySQL 5.6.13,从存储引擎内核角度对InnoDB的核心实现和工作机制进行深入剖析。
为什么要写这本书
过去这些年,我一直在和各种不同的数据库打交道,见证了MySQL 从一个小型的关系型数
据库发展成为各大互联网企业的核心数据库系统的过程。期间我参与了一些大大小小的项目开发工作,成功地帮助开发人员构建了一些可靠的、健壮的应用程序。在这个过程中积累了一些经验,正是这些不断累积的经验赋予了我灵感,于是有了本书。这本书实际上反映了这些年来我做了哪些事情,汇集了很多同行每天可能都会遇到的一些问题,并给出解决方案。
本书是MySQL 内核系列的第一本书,与之前出版的MySQL 技术内幕不同的是,该系列的
书将更靠近数据库内核层面,揭示MySQL 数据库内核是如何运行的。MySQL 内核系列的第
一本书将从InnoDB 存储引擎的内核来展开。
毫无疑问,InnoDB 存储引擎已经成为MySQL 数据库的“标准配置”。Facebook、Twitter、Yahoo、百度、淘宝、腾讯、网易这些互联网公司都将InnoDB 作为后台的存储引擎。在时间的长河以及线上高并发验证下,其已经被证明是高性能、高可扩展性的引擎。
身处数据库这个圈子,可以明显地感觉到从2010 年开始,各大互联网公司已经不再满足于
仅仅使用InnoDB 存储引擎,他们开始越来越接触到引擎的内核层面,对引擎进行内核级别
的优化以及根据公司的业务需求进行二次开发。即使是DBA 本身也开始慢慢地不满足现状
开始研究起InnoDB 存储引擎的内核,似乎一夜之间不了解点内核实现都不好意思和别人说
你是搞MySQL 数据库的。
当然,我们需要感谢MySQL 数据库,感谢MySQL 数据库的创始人和InnoDB 存储引擎的创
始人。正是他们开源了这些代码,使得我们这些后人可以站在巨人的肩膀上继续学习与进步。
在这方面,MySQL/InnoDB 比其他数据库都要伟大,更值得我们尊敬。
不可否认的是,国内对于数据库内核的开发学习资料与课程都非常有限。本科阶段几乎没有
相关课程,仅特定数据库研究方向的研究生才会去关注这些技术,并且这些人才在国内非常
稀少。很多想要踏进数据库内核领域的人在最初都会感到迷茫和无助。
IV | 前言
另外,有些人凭着自己的聪明与天赋看似掌握了内核的实现,但是从他们的博客描述来看,
其离真正的理解还是有一些距离的,或者说他们仅刚入门。所以我们才会在网上看到不断
有人在翻阅过代码后,或者简单设置了几个断点和调试后抱怨InnoDB 存储引擎的设计是多
么烂。
数据库的世界并不如他们想象的那样简单与粗糙,数据库有着自己的理论体系。虽然数据库
的实现有很多种,但大多需要遵循一些理论规范,如Fix Rules、Write-Ahead Log、Forcelog-
at-commit、Lock 等。
我从2006 年就开始进行数据库的内核开发,现在想来还最多只能称为hack。我在内核开发
的路上走了很多弯路,经过高人的指点以及自己不断的学习与探索,终于有了一些经验,现
通过本书来完整地展示给读者。希望通过MySQL 内核系列,使正在通往或已经在数据库内
核开发道路的人员少走弯路。
出于这个目的,我联合了网易MySQL 技术组的各位同事,完成了InnoDB 存储引擎卷1 的
书籍撰写工作。其中第1、3、4、5、7、8、9、10、11 章由我个人独立完成,第2 和第14
章由我和温正湖共同完成、第6 和第12 章由我和饶陇辉共同完成、第13 和第15 章由我和
蒋鸿翔共同完成。
在每章的最后,我还给出了思考题以及继续阅读的参考资料,通过这部分的内容,读者可以
加深对于每个知识模块的理解,并继续对某一模块进行深入研究。
读者对象
本书面向的读者群:
y 数据库管理员
y 数据库架构设计师
y 数据库内核开发人员
y 其他对数据库内核感兴趣的开发人员
如何阅读本书
本书一共有15 章,每章都像一本“迷你书”,可以单独成册。用户可以有选择地阅读,但是
更推荐根据本书的组织方式进行阅读,这样会更具有条理性。
第1 章 概览
本章首先介绍了MySQL 数据库以及InnoDB 存储引擎的历史,之后介绍了InnoDB 存储引擎
的源码结构与代码风格,最后推荐了阅读InnoDB 存储引擎源码的次序。
前言 | V
第2 章 基本数据结构与算法
本章对InnoDB 中常用的数据结构和算法进行了介绍。首先是InnoDB 的内存管理系统,从
内存管理机制、内存操作基元和内存池及内存区等概念着手进行了详细讲解;之后是哈希表
结构,介绍了简单哈希表和带链哈希表两种;然后介绍了双链表结构;最后还介绍了动态数组、
标准排序函数。本章的内容是InnoDB 的基础,相信读者在阅读后续章节的代码时一定会遇
到本章所提的相关数据结构与算法。
第3 章 同步机制
本章介绍了InnoDB 存储引擎中实现的同步机制mutex 和rw-lock。InnoDB 存储引擎正是通
过这些数据结构才能完成正确并发控制的。
第4 章 重做日志
本章首先介绍与重做日志模块相关的概念,之后具体分析了InnoDB 存储引擎重做日志模块
的实现。InnoDB 存储引擎原先就支持组提交,因此有着相当不错的性能。最后,根据之前所
介绍的内容,分析了如何通过重做日志进行有效恢复,从而实现事务系统持久性的要求。
第5 章 mini-transaction
本章介绍了数据库中的三个协议:Fix Rules、Write-Ahead Log、Force-Log-at-Commit,同
时介绍了InnoDB 存储引擎中mini-transaction 的实现,并通过一个示例简单展示了minitransaction
产生的重做日志内容。
第6 章 存储管理
本章介绍了InnoDB 存储引擎的物理存储方式,这包括表空间的构成,段、区、页的存储管
理。此外,还介绍了InnoDB 存储引擎的文件操作方式,包括文件操作的架构设计、同步读/
写方式和异步读/ 写方式,分别介绍了Windows 操作系统、Posix 操作系统以及InnoDB 模拟
的三种异步I/O 的实现方法。
第7 章 记录
本章介绍了InnoDB 存储引擎的记录(record),使读者了解在源码中记录可以分为物理记录
与逻辑记录,以及各种记录所使用的场合。
第8 章 索引页
本章介绍了InnoDB 存储引擎的索引页,知道在源码中页可以分为物理页与逻辑页,并且详
细分析了page header 以及page directory。此外,还对InnoDB 存储引擎如何在页中进行记录
的定位、插入和删除等操作进行了详细介绍。
VI | 前言
第9 章 锁
本章介绍了InnoDB 存储引擎锁的实现技术。在InnoDB 存储引擎中,其通过next-key
locking 算法在事务隔离级别为REPEATABLE READ 实现了完全的隔离性要求。此外,其对
锁的设计是一种极其高效的设计方式。每个内核开发人员都应该细读lock 模块,从而更为深
入地理解锁的内部实现。
第10 章 B+ 树索引
本章对InnoDB 存储引擎的B+ 树索引实现做了十分详细的介绍。该部分所需要涉及的内容非
常多,与前面章节的联系也比较紧密,是一个极为重要的章节。希望读者可以反复阅读,从
而更好地体会InnoDB 存储引擎中B+ 树索引的实现。
第11 章 Insert Buffer
本章介绍了InnoDB 存储引擎中Insert Buffer 的实现,首先介绍了Insert Buffer 的基本概念,
然后介绍了Insert Buffer 的物理与逻辑存储结构,并通过一个示例进行展示。最后,介绍了
Insert Buffer 的源码实现。我认为这个模块是难度最大的模块之一。
第12 章 缓冲池
本章介绍了InnoDB 存储引擎缓冲池的实现,这包括缓冲池的管理、页的读取和页的刷新。
此外,还介绍了InnoDB 存储引擎使用midpoint insertion strategy LRU 的LRU 管理机制。
第13 章 事务处理
本章介绍了InnoDB 存储引擎的事务处理模块,介绍了InnoDB 存储引擎对于undo 记录的存
储方式,这其中涉及事务系统段、回滚段、undo 段、undo 页、undo 日志、undo 记录等多个
概念,读者应该好好地理清这些概念。此外,还讲述了事务的purge、rollback、commit 等操
作的具体实现。相信通过本章的学习读者可以了解如何设计一个高效的事务系统。
第14 章 数据字典
本章介绍了InnoDB 存储引擎对于数据字典的具体实现,以及其与之前各章的联系。
第15 章 服务管理
本章介绍了InnoDB 存储引擎各服务模块的管理,并展示了这些服务模块的具体实现。
勘误和支持
由于水平有限,编写时间仓促,书中难免会出现一些错误或不准确的地方,恳请读者批评指正,
前言 | VII
我将尽力在线上为你提供最满意的解答。如果你有更多的宝贵意见,也欢迎发送邮件至邮箱
jiangchengyao@gmail.com,期待能够得到您最真挚的反馈。
致谢
感谢网易研究院的所有同事们,能与一群才华出众的人一起工作让我感到非常荣幸与自豪,
同时通过不断地与他人的交流,使我在数据库方面得到了极大的提升和领悟。
感谢电子工业出版社博文视点公司的孙学瑛老师,她在这段时间内始终支持我的写作,正是
她的鼓励和帮助引导我顺利完成全部书稿。
谨以此书献给我最亲爱的家人,以及众多热爱MySQL 数据库的朋友们!
姜承尧(David Jiang)
2014 年3 月于中国杭州

目录

目录 阅读
第1章 概览
第2章 基本数据结构与算法
第3章 同步机制
第4章 重做日志
第5章 mini-transaction
第6章 存储管理
第7章 记录
第8章 索引页
第9章 锁
第10章 B+ 树索引
第11章 Insert Buffer
第12章 缓冲池
第13章 事务处理
第14章 数据字典
第15章 服务管理

读者评论

  • PDF的,不是mobi or epub
    kissgxd发表于 2016/12/5 14:16:57
    • 是的,部分电子书是PDF格式

      陈晓猛发表于 2016/12/5 15:35:21

电子书版本

  • PDF

图书类别

相关图书

Knative最佳实践

Jacques Chester (作者) 赵吉壮 杨云锋 (译者)

本书主要围绕 Knative 进行展开,主要作者是 Knative 专家(社区作者)Jacques Chester ,先后从 Knative 构建、扩缩容、事件...

¥118.00

ATT&CK框架实践指南

过去,入侵检测能力的度量是个公认的行业难题,各个企业得安全负责人每年在入侵防护上都投入大量费用,但几乎没有人能回答CEO 的问题:“买了这么多产品,我们的入侵防...

¥148.00

云原生数据库:原理与实践

周恩昌 (作者)

本书详细剖析了作为核心基础软件系统的数据库在云计算时代的技术演进历程,从架构设计、实现机制和系统优化等多个角度阐述传统数据库技术是如何一步步发展到云原生形态的。...

¥99.00

SequoiaDB分布式数据库权威指南

黄达玮 (作者)

本书旨在介绍 SequoiaDB 巨杉数据库的基本概念、应用场景、企业级应用案例、数据库实例创建与管理方式、数据库集群管理的基本策略、以及性能调优和问题诊断。...

¥99.00

最强iOS和macOS安全宝典

Jonathan Levin (作者) 郑旻 (译者)

《最强iOS和macOS安全宝典》以苹果操作系统的安全为主题,主要面向苹果高级用户、系统管理员、安全研究人员和黑客。<br>本书主要分三个部分:第一部分重点介绍...

¥179.00

极限黑客攻防:CTF赛题揭秘

王新辉 天融信阿尔法实验室 张黎元 郭勇生 (作者)

CTF在网络安全领域特指网络安全技术人员之间进行技术竞技的一种比赛。CTF代替了以往黑客通过互相发起真实攻击进行技术比拼的方式,题目来自日常工作环境,并将其中的...

¥99.00