分类: Mysql/postgreSQL
2010-11-22 16:24:49
作者:姜承尧
过去这些年,我一直在和各种不同的数据库打交道,见证了MySQL从一个小型的关系型数据库发展成为各大企业的核心数据库系统的过程,并且参与了一些大大 小小的项目的开发工作,成功地帮助开发人员构建了一些可靠、健壮的应用程序。在这个过程中积累了一些经验,正是这些不断累积的经验赋予了我灵感,于是有了。这本书实际上反映了这些年来我做了哪些事情,汇集了很多同行每天可能都会遇到的一些问题,并给出了解决方案。
MySQL数据库独有的插件式存储引擎架构使得它与其他任何数据库都不同,不同的存储引擎有着完全不同的功能,而InnoDB存储引擎的存在使得 MySQL跃入了企业级数据库领域。本书完整地讲解了InnoDB存储引擎中最重要的一些内容,即InnoDB的体系结构和工作原理,并结合InnoDB 的源代码讲解了它的内部实现机制。
不仅介绍了InnoDB存储引擎的诸多功能和特性,而且还阐述了如何正确地使用这些功能和特性。更重要的是,它还尝试教大家如何Think Different。Think Different是20世纪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中使用SQL语句。本书面向那些使用MySQL InnoDB存储引擎作为数据库后端开发应用程序的开发者和有一定经验的MySQL DBA。书中的大部分例子都是用SQL语句来展示关键特性的,如果想通过本书来了解如何启动MySQL,如何配置Replication环境,可能并不能 如愿。不过,通过本书,你将理解InnoDB存储引擎是如何工作的,它的关键特性的功能和作用是什么,以及如何正确地配置和使用这些特性。
如果想更好地使用InnoDB存储引擎,如果想让你的数据库应用获得更好的性能,就请阅读本书。从某种程度上讲,技术经理或总监也要非常了解数据库,要知 道数据库对于企业的重要性。如果技术经理或总监想安排员工参加MySQL数据库技术方面的培训,完全可以利用本书来“充电”,相信你一定不会失望的。
要想更好地学习本书,要求具备以下条件:
如何阅读本书
本书一共有10章,每一章都像一本“迷你书”,可以单独成册,也就说,你完全可以从书中任何一章开始阅读。例如,要了解第10章中的InnoDB源代码编 译和调试的知识,就不必先去阅读第3章有关文件的知识。当然,如果你不太确定自己是否已经对本书所涉及的内容已经完全掌握,建议你系统地阅读本书。
本书不是一本入门书,不会一步步引导你去如何操作。倘若你尚不了解InnoDB存储引擎,本书对你来说可能就显得沉重了些,建议你先查阅官方的API文档,大致掌握InnoDB的基础知识,然后再来阅读本书,相信你会领略到不同的风景。
需要特别说明的是,附录B~D详细给出了Master Thread、Doublewrite、哈希算法和哈希表的源代码,前面学习了这些理论知识,再适当地阅读这些源代码,相信有经验的DBA可以更好地掌握 和理解InnoDB存储引擎的本质。为了便于大家阅读,本书在提供源代码下载的同时也将源代码附在了书中,因此占去了一些篇幅,还请大家理解。