当前位置: 首页 > news >正文

MySQL技术内幕:InnoDB存储引擎

 

作者:姜承尧


过去这些年,我一直在和各种不同的数据库打交道,见证了MySQL从一个小型的关系型数据库发展成为各大企业的核心数据库系统的过程,并且参与了一些大大 小小的项目的开发工作,成功地帮助开发人员构建了一些可靠、健壮的应用程序。在这个过程中积累了一些经验,正是这些不断累积的经验赋予了我灵感,于是有了《MySQL技术内幕:InnoDB存储引擎》。这本书实际上反映了这些年来我做了哪些事情,汇集了很多同行每天可能都会遇到的一些问题,并给出了解决方案。

MySQL数据库独有的插件式存储引擎架构使得它与其他任何数据库都不同,不同的存储引擎有着完全不同的功能,而InnoDB存储引擎的存在使得 MySQL跃入了企业级数据库领域。本书完整地讲解了InnoDB存储引擎中最重要的一些内容,即InnoDB的体系结构和工作原理,并结合InnoDB 的源代码讲解了它的内部实现机制。

《MySQL技术内幕:InnoDB存储引擎》不仅介绍了InnoDB存储引擎的诸多功能和特性,而且还阐述了如何正确地使用这些功能和特性。更重要的是,它还尝试教大家如何Think DifferentThink Different20世纪90年代苹果公司在其旷日持久的宣传活动中提出的一个口号,借此来重振公司的品牌,更重要的是改变人们对技术在日常生活中的 作用的看法。需要注意的是,苹果的口号不是Think Differently,而是Think Different。这里的Different是名词,意味该思考些什么。

很多DBA和开发人员都相信某些神话,然而这些神话往往都是错误的。无论计算机技术发展的速度变得多快、数据库的使用变得多么简单,任何时候 WHY都比WHAT重要。只有真正地理解了内部实现原理、体系结构,才能更好地去使用。这正是人类正确思考问题的原则。因此,对于当前出现的技术,尽管学 习应用层面的技术很重要,但更重要的是,应当正确地理解和使用这些技术。

关于这本书,我想实现好几个目标,但最重要的是想告诉大家如下几个简单的观点:

  • 不要相信任何神话,学会自己思考。
  • 不要墨守成规,大部分人都知道的事情可能是错误的。
  • 不要相信网上的传言,去测试,根据自己的实践做出决定。
  • 花时间充分地思考,敢于提出质疑。

 

为什么写本书

当前有关MySQL的书籍大部分都集中在教读者如何使用MySQL,例如SQL语句的使用、复制的搭建、数据的切分等。没错,这对快速掌握和使用MySQL数据库非常有好处,但是真正的数据库工作者需要了解的不仅仅是应用,更多的是内部的具体实现。

MySQL数据库独有的插件式存储引擎结构使得想要在一本书内完整地讲解各个存储引擎变得十分困难。有的书可能偏重于对MyISAM的介绍,有的书则可能 偏重于对InnoDB存储引擎的介绍。对于初级的DBA来说,这可能会使他们的理解变得更困难。对于大多数MySQL DBA和开发人员来说,他们往往更希望了解作为MySQL企业级数据库应用的第一存储引擎—InnoDB。我想在本书中,他们可以找到他们想要的内容。

再强调一遍,任何时候WHY都比WHAT重要。本书从源代码的角度对InnoDB的存储引擎的整个体系架构的各个组成部分进行了系统的分析和讲解,剖析了InnoDB存储引擎的核心实现和工作机制,相信这在其他书中是很难找到的。


本书面向的读者

《MySQL技术内幕:InnoDB存储引擎》不是一本面向应用的数据库类书籍,也不是一本参考手册,更不会教你如何在MySQL中使用SQL语句。本书面向那些使用MySQL InnoDB存储引擎作为数据库后端开发应用程序的开发者和有一定经验的MySQL DBA。书中的大部分例子都是用SQL语句来展示关键特性的,如果想通过本书来了解如何启动MySQL,如何配置Replication环境,可能并不能 如愿。不过,通过本书,你将理解InnoDB存储引擎是如何工作的,它的关键特性的功能和作用是什么,以及如何正确地配置和使用这些特性。

如果想更好地使用InnoDB存储引擎,如果想让你的数据库应用获得更好的性能,就请阅读本书。从某种程度上讲,技术经理或总监也要非常了解数据库,要知 道数据库对于企业的重要性。如果技术经理或总监想安排员工参加MySQL数据库技术方面的培训,完全可以利用本书来充电,相信你一定不会失望的。

要想更好地学习本书,要求具备以下条件:

  • 掌握SQL
  • 掌握基本的MySQL操作。
  • 接触过一些高级语言,如CC++PythonJava
  • 对一些基本算法有所了解,因为本书会分析InnoDB存储引擎的部分源代码,如果你能看懂这些代码,这会对你的理解非常有帮助。

 

如何阅读本书

本书一共有10章,每一章都像一本迷你书,可以单独成册,也就说,你完全可以从书中任何一章开始阅读。例如,要了解第10章中的InnoDB源代码编 译和调试的知识,就不必先去阅读第3章有关文件的知识。当然,如果你不太确定自己是否已经对本书所涉及的内容已经完全掌握,建议你系统地阅读本书。

本书不是一本入门书,不会一步步引导你去如何操作。倘若你尚不了解InnoDB存储引擎,本书对你来说可能就显得沉重了些,建议你先查阅官方的API文档,大致掌握InnoDB的基础知识,然后再来阅读本书,相信你会领略到不同的风景。

需要特别说明的是,附录BD详细给出了Master ThreadDoublewrite、哈希算法和哈希表的源代码,前面学习了这些理论知识,再适当地阅读这些源代码,相信有经验的DBA可以更好地掌握 和理解InnoDB存储引擎的本质。为了便于大家阅读,本书在提供源代码下载的同时也将源代码附在了书中,因此占去了一些篇幅,还请大家理解。


《MySQL技术内幕:InnoDB存储引擎》

 

相关文章:

  • 《企业文化地图》出版揭示人民企业集团等沪上近20家行业领袖成功秘笈
  • Grace Hopper:编译语言之母、千年虫制造者、世界第三位程序员(COBOL语言创始人)、海军少将
  • Grace Hopper:编译语言之母/千年虫制造者/世界第三位程序员/COBOL语言创始人/海军少将...
  • 《深入理解计算机系统》英文版6.5折预定!
  • 迅速步入jQuery的殿堂
  • 《jQuery权威指南》
  • 《人月神话》作者Frederick P. Brooks, Jr.大师论设计原本
  • 《企业文化地图》首发仪式圆满落幕
  • 《人月神话》作者Brooks最新力作《设计原本》前500册65折首发,英文版同步发售!
  • 《人月神话》作者Brooks最新力作《设计原本》前500册65折首发,英文版同步发售!...
  • 2011年第1期华章新书书讯:设计原本、深入理解计算机系统、jQuery权威指南
  • 《设计原本》成书始末(BY 高博)
  • Mongo北京大会3月3号召开!报名抢注火爆进行中!(免费)
  • Mongo北京大会3月3号召开!免费报名,抢注火爆进行中!
  • 主题演讲:《中国IT外包新视界— 当中国成为世界第二大经济体 》
  • 【React系列】如何构建React应用程序
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • 2017前端实习生面试总结
  • Docker 笔记(2):Dockerfile
  • iOS 颜色设置看我就够了
  • JavaScript 一些 DOM 的知识点
  • Python学习之路16-使用API
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • Spring Cloud Feign的两种使用姿势
  • 动态规划入门(以爬楼梯为例)
  • 力扣(LeetCode)965
  • 如何设计一个微型分布式架构?
  • 延迟脚本的方式
  • 责任链模式的两种实现
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • 浅谈sql中的in与not in,exists与not exists的区别
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • 组复制官方翻译九、Group Replication Technical Details
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • ​决定德拉瓦州地区版图的关键历史事件
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (2)STM32单片机上位机
  • (a /b)*c的值
  • (二十四)Flask之flask-session组件
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (一)Dubbo快速入门、介绍、使用
  • (原)Matlab的svmtrain和svmclassify
  • .NET C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)
  • .NET/MSBuild 中的发布路径在哪里呢?如何在扩展编译的时候修改发布路径中的文件呢?
  • .net遍历html中全部的中文,ASP.NET中遍历页面的所有button控件
  • .Net接口调试与案例
  • .net开发引用程序集提示没有强名称的解决办法
  • @manytomany 保存后数据被删除_[Windows] 数据恢复软件RStudio v8.14.179675 便携特别版...
  • [Angular 基础] - 数据绑定(databinding)