写在前面
MySQL被设计为一个可移植的数据库,几乎在当前所有系统上都能运行,如Linux、Solaris、FreeBSD、Mac和Windows。尽管各平台在底层(如线程)实现方面都各有不同,但是MySQL基本上能保证在各平台上的物理体系结构的一致性。因此,用户应该能很好地理解MySQL数据库在所有这些平台上是如何运作的。
由于工作的缘故,笔者的大部分时间需要与开发人员进行数据库方面的沟通,并对他们进行培训。不论他们是DBA,还是开发人员,似乎都对MySQL的体系结构了解得不够透彻。很多人喜欢把MySQL与他们以前使用的SQLServer、Oracle、DB2作比较。因此笔者常常会听到这样的疑问:
为什么MySQL不支持全文索引?MySQL速度快是因为它不支持事务吗?数据量大于万时MySQL的性能会急剧下降吗?不知道朋友们是否遇到过类似问题?在这里,笔者为大家安利一篇介绍MySQL数据库知识的专业秘籍——《MySQL运维内参:MySQL、Galera、Inception核心原理与最佳实践》
本篇特点
从核心原理到最佳实践,深入浅出、抽丝剥茧地进行讲解,不仅从源码和运维两个角度介绍了MySQL大部分重要概念和运维要点,还讲述了MySQL极为优秀的集群组件Galera的实现原理和运维经验,同时,也介绍了作者独立开发的MySQL审核系统Inception的设计、实现与功能。
本篇也得到了MySQL官方研发团队的大力支持,两位资深专家分别介绍了MySQL最新的支持NoSQL的组件MySQLDocumentStore,以及集群化组件MySQLGroupReplication的实现原理和运维要点。
本篇不仅可以作为技术管理者和架构师在设计MySQL相关应用和系统时的参考,还适合MySQL应用开发者更深入地了解和使用MySQL。最后,作为MySQLDBA的必备参考,希望本篇能在实际工作中对读者有所帮助。
本书总体分三个部分。
第一部分是MySQL。第二部分是Galera。第三部分是Inception。MySQL篇
在这一部分中,我们介绍了MySQL大部分常见知识点的概念和原理,以及运维经验。所谓源码面前,了无秘密。我们从MySQL源码入门开始,介绍源码结构、启动过程、创建连接、表对象缓存等,希望读者在研究MySQL的时候,能充分借助MySQL源码开源的优势,从源码出发,深入理解MySQL的精髓。当然,限于篇幅,我们只能抛砖引玉,适可而止。期望聪明的读者能打好基础,登堂入室。
本部分会重点介绍InnoDB的相关概念,从源码目录结构,到InnoDB体系架构及其数据字典、数据存储结构、索引的实现原理、两次写(DoubleWrite)、日志管理机制、InnoDB记录格式等,都进行了深度的剖析,这块内容比较复杂,也凝聚了我们巨大的心血,期望能帮助读者理解其中的相关概念。
随着MySQL5.7的成熟及MySQL8.0的发布,一大波MySQL新技术迎面扑来,我们也不会放过这次学习的机会。值得称道的是,本篇中包含了来自两位MySQL官方团队的专家特地给我们供稿的内容,分别详细讲述了MySQL对JSON的支持:MySQLGroupReplication和MySQLDocumentStore。另外,我们也