四年前,当我第一次接触MySQL时,版本还是4.1。当时的感觉这个数据库怎么这么“小”:安装文件小,只有不到20M;支持功能少,连基本的视图、过程、分区等功能都不支持;入门简单,几乎一天就可以熟练使用。不仅如此,而且使用起来感觉比较“怪异”,创建表时还要指定“MyISAM”、“InnoDB”这样奇怪的“存储引擎”,表名还要分大小写。这对当时已经习惯ORACLE这样“大型”数据库的自己来说,简直就像退回到了旧石器时代,心想虽然免费,但这样的数据库能用吗?

随着工作的需要,慢慢的对MySQL的了解多了起来,原来的一些观念也逐渐发生了改变:虽然功能少,但占用磁盘空间小,而且对于开发使用来说,主要的功能基本都有,尤其是在MySQL5.0发布之后,一些常用功能更加完善,而对于功能庞大的ORACLE来说,近一个G的安装文件中,可能真正经常使用到的功能最多也就20%;虽然使用时要指定各种各样的“存储引擎”,但这些存储引擎却是八仙过海,各有各的”神通“,在不同的使用场景中,我们可以灵活的按需进行选择,使得我们的数据库性能尽可能的优化;尤其是对于MySQL的开源策略,越来越觉得是MySQL能够普及的一个最大特点。首先,在满足GPL协议下,MySQL可以任意下载并可以商用,这使得企业信息化建设的成本大大降低,这也是近几年互联网行业发展极快的原因之一;其次,开源的特性使得大家都可以对数据库源码进行一些个性化的修改,用来提高数据库的性能或者增加新的功能,而这些改进反过来也使得更多使用者能够从中受益。

目前在互联网行业,MySQL已经使用非常广泛,但相关的资料和书籍却一直比较缺乏。在目前已出版的中文图书中,MySQL相关的书屈指可数,专门介绍MySQL的书更是凤毛麟角。一年前,我和几位同事一起合作写了一本<<深入浅出MySQL>>,当时写书的初衷是将工作中使用MySQL的一些经验记录下来,希望使更多的MySQL初学者少走些弯路。出版之后,市场的反应有点出乎我们意料,关注度一直比较高,细想之下,原因也许就是系统介绍MySQL的中文书籍和资料实在太少。很多读者看过后提了不少批评和建议,其中比较多的是MySQL的架构设计和优化内容偏少。熟悉MySQL的读者一般都知道,MySQL最大的问题就是在大数据量和高并发环境下和商业数据库的性能差别较大,因此对MySQL的优化更多的不在于数据库本身,而在于架构的设计,即如何通过分表、分库、复制、Cache等技术使得数据库能合理分配访问压力。如何来进行架构设计则更多的取决于设计者的经验,市场上相关资料很少能够见到,而本书恰恰弥补了这一空白。

虽素未谋面,却早已得知作者在写一本MySQL的大作,内容主要是MySQL架构设计和优化方面的。有幸提前看到了部分原稿,感觉文笔流畅、思路严谨、图文并茂,最重要的是内容很实用,相信此书的出版对广大互联网朋友来说会带来很多收获!

在写本文的前一天,业界发生了一个令人震惊的收购,ORACLE将以74亿美元的价格收购SUN,这也使得昔日数据库领域的两个重要竞争对手ORACLE和MySQL成为了一家,数据库的市场格局因此也将发生重大改变,MySQL能否会在 ORACLE 这样一个对数据库系统有着极深理解的公司的主导下给大家带来更多的惊喜呢?让我们都拭目以待吧!

翟振兴
网易高级DBA
《深入浅出MySQL》一书主要作者
Blog:http://zhaizhenxing.blog.51cto.com/

注:此推荐序版权归 翟振兴 所有

, , ,

在我们这个时代,互联网上的资讯、交友、交易、Blog、游戏……已经融入了我们的生活。很难想象,一下子没了互联网我们会如何的不习惯,恐怕堪比互联网出现前突然让所有家庭没了电视。大量互联网上人的活动,产生大量有价值信息,这些信息被存放于数据库中。互联网也对数据库的技术传播功不可没。2000年的时候,要在网络上寻找有关数据库的技术资讯是那样地艰难,大量技术问题都需要自己去摸索。2002年oracle数据库讨论和学习氛围的兴起,成就了那一代数据库技术爱好者。他们对数据库技术的热爱,以及乐于分享的精神,促进了DBA这个行业的蓬勃发展。

随着时代的进步,大中型机的没落,Intel CPU技术的发展引领着PC Server的更新换代,与小型机的性能差距越来越小,到今天价格几万人民币的PC Server已经可以超越部分厂家的价格百万的小型机处理能力。PC Server 的低成本和高性能是LAMP发展的基础,成本的巨大差异是用户选择pc server的原动力。数据的爆发增长对于数据库的渴求,让人们自然地将目光投向了MySQL,MySQL作为开源数据库的领军人物,向以投入成本大的Oracle数据库发起了挑战。其实在中国这么多年来MySQL数据库的应用和管理人才非常少,基本停留在非常初级的阶段。如今的状况看起来就跟2001年左右的Oracle数据库状况一样。这意味着MySQL数据库领域可能迎来高速的发展,这样也必然形成金字塔型的人才结构。在目前普遍应用非常简单的状况下,通过一两年努力,就很容易占到行业的前端,这样随着市场的扩大,站在行业领域前沿的人的价值也就越大。

本书作者刚参加工作的时候也是做Oracle数据库,后来对MySQL经过潜心研究和应用实践,在这个领域已经处于国内领先行列。为了加快这个行业的快速发展,作者不断地在互联网上分享他的研究成果,到今天整理成书,是一个自然的结果。作者对MySQL技术细致深入,对大规模群集方面有着丰富的解决方案。只要大家看一看本书内容,就知道本书的价值。这恐怕是国内市面上第一本如此透彻、深入的书籍。最后感谢作者给我们带来这样精彩的作品。

冯春培
阿里巴巴首席DBA、研究员,Oracle ACE

注:此推荐序版权归 冯春培(BitiRainy) 所有

, , , ,

2006年,阿里巴巴B2B与淘宝DBA团队第一次引入了校园招聘的毕业生,2年半的时间过去了,当年加入淘宝的毕业生成了淘宝开发DBA的主管,而当年加入阿里巴巴B2B的毕业生,就是本书的作者。第一次听别人说起作者的时候,有2点给我的印象是比较深的,一是有误传该学生毕业于军校,以至于后来,又误传他曾经加入过海军陆战队;二是该学生目标非常清晰,就是一定要做DBA,对于其它职位不予考虑。至于更后来,又知道他是我老乡,甚至春节一起回家,那就是后话了。

作者刚毕业的时候其实学的是Oracle,后来,一是因为工作本身的需要,二来在我的建议下,改走了MySQL这条路。我很高兴作者能做出这个选择,并能在MySQL这条路上持之以恒的坚持下来。在当时,做MySQL DBA,其实是一个非常好的机会,也是一个新的切入点。Oracle从2001年在国内开始起步,2005年左右达到鼎盛的辉煌时期,同时造就了一大批大师级别的Oracle DBA,也成为后来者难以逾越的一道高墙。MySQL则不一样,这1-2年刚起步,未来2年左右如果能达到鼎盛时代的话,同样应当能成就一批大师,作者有可能就能成为其中的一员。

在这么一个浮躁的年代,一个物质欲横流的时代,作者能持续保持学习的动力,并且不断进步提升,是非常不容易的。这本书,既是作者这几年来DBA成长之路的一个总结,更是非常好的一个经验借鉴,特别是对于那些刚走出校园的毕业生,这本书或者能让你们少走很多的弯路。很多毕业生,或者是渴望成功的普通工程师,总是把眼光放在别人成功的路上,但是,实际上,更容易成功的地方,是从来没有人成功过的地方。

我写过书,深知写书的难度,把知识与经验从点汇总到面的艰辛,但是,更值得兴奋的,其实是那种艰辛之后的收获,一通百通之后的成就。我对MySQL的研究不是很深入,但是,从我对作者本人的熟知,对作者做过的实际案例的了解,我相信本书能给大家带来耳目一新的感觉。同时,也感谢作者的辛苦工作,能把自己的知识与经验分享给大家,感谢作者能给大家带来如此好的一本书。

陈吉平
淘宝首席DBA,Oracle ACE
《搭建oracle高可用环境》一书作者

注:此推荐序版权归 陈吉平(Piner)所有

, , , ,

《MySQL性能调优与架构设计》一书很快就会在各书店上架了,这里帖出几位好友为此书所写的推荐序,分别是:冯大辉,陈吉平,冯春培,翟振兴,叶金荣,吴诗展,再次在此感谢几位了。(按照出版社要求以各位的年龄为序排列)

第一篇先列出冯大辉(Fenng)的推荐序,如下:

拥抱MySQL数据库技术

时至今日,恐怕已经没有人再把 MySQL 当成一个玩具性质的软件产品,即使是数据库市场执牛耳者如Oracle公司也不得不正式面对来自MySQL的冲击。如果说几年前,还有人对使用MySQL有所疑虑么? 经过几年来互联网的高速发展,无数大型网站用其成功案例证明,以MySQL为基础的数据层解决方案已经成为互联网应用不可或缺的一个重要组成部分。

当下也是数据库技术应用处于激烈变革的时期。这并不是说传统的关系数据库技术在这两年有了多大的新突破,而是用户的需求在迅速变化。更多时候,用户不再需要单一的软件产品,而是灵活、高效、可靠、可控、低廉的解决方案。很多大型站点甚至根据自己的需求来改进 MySQL,进而回馈给开源社区,这也是开放的魅力所在,对于传统的商业数据库软件商来说,这是不可想象的事情。

MySQL早已不再是单一的数据库软件,以其为基础发展起来的各种开源组件令人目不暇接,而用这些组件构成的解决方案也是层出不穷。如何能够把以MySQL为核心的这一系列软件充分运用,构建大型可扩展性网站,正是不少LAMP架构体系的网站开发者乃至架构师一直关心的问题。现在中文图书市场上 MySQL相关的书籍并不在少数,但放眼看去,绝大多数是教程类的内容,这本《MySQL性能调优与架构设计》则主要着眼于性能与架构这两个当下大家更为关注的话题,结合作者几年来的实战经验与研究心得,相信能让不少网站少走弯路。

期待这本书让更多人受益。如果读者朋友们也能把自己的心得分享出来,那是再好不过的事情了。经常有即将毕业的学生以及网络上的朋友给我发来邮件,表示对数据库技术有兴趣,但是不知道如何切入,我的建议是,从学习MySQL开始吧!

冯大辉
支付宝(中国)网络技术有限公司 数据架构师,Oracle ACE
个人技术Blog: http://dbanotes.net

注: 此推荐序版权归 冯大辉(Fenng)所有

, , , ,

从去年开始计划写这本书到现在前前后后已经10个月了,现在书稿已经出片,在印刷厂印刷中了,按照出版社的计划,只要后面出版社不出现异常状况,在月底之前肯定会上架面市。

在此感谢大家一直以来的给我的帮助与支持,感谢大家的关注。

在这里先放出最终的目录结构:

第1篇 基础篇

    • 第1章 MySQL基本介绍
      • 1.0 引言
      • 1.1 MySQL Server简介
      • 1.2 MySQL与其他数据库的简单比较
      • 1.3 MySQL 的主要适用场景
      • 1.4 小结
    • 第2章 MySQL架构组成
      • 2.0 引言
      • 2.1 MySQL物理文件组成
      • 2.2 MySQL Server系统架构
      • 2.3 MySQL 自带工具使用介绍
      • 2.4 小结
    • 第3章 MySQL存储引擎简介
      • 3.0 引言
      • 3.1 MySQL存储引擎概述
      • 3.2 MyISAM存储引擎简介
      • 3.3 InnoDB存储引擎简介
      • 3.4 NDB Cluster 存储引擎简介
      • 3.5 其他存储引擎介绍
      • 3.6 小结
    • 第4章 MySQL安全管理
      • 4.0 引言
      • 4.1 数据库系统安全相关因素
      • 4.2 MySQL 权限系统介绍
      • 4.3 MySQL 访问授权策略
      • 4.4 安全设置注意事项
      • 4.5 小结
    • 第5章 MySQL备份与恢复
      • 5.0 引言
      • 5.1 数据库备份使用场景
      • 5.2 逻辑备份与恢复测试
      • 5.3 物理备份与恢复测试
      • 5.4 备份策略的设计思路
      • 5.5 小结

    第2篇 性能优化篇

      • 第6章 影响MySQL Server性能的相关因素
        • 6.0 引言
        • 6.1 商业需求对性能的影响
        • 6.2 系统架构及实现对性能的影响
        • 6.3 Query语句对系统性能的影响
        • 6.4 Schema设计对系统的性能影响
        • 6.5 硬件环境对系统性能的影响
        • 6.6 小结
      • 第7章 MySQL数据库锁定机制
        • 7.0 引言
        • 7.1 MySQL锁定机制简介
        • 7.2 各种锁定机制分析
        • 7.3 合理利用锁机制优化MySQL
        • 7.4 小结
      • 第8章 MySQL数据库Query的优化
        • 8.0 引言
        • 8.1 理解MySQL的Query Optimizer
        • 8.2 Query 语句优化基本思路和原则
        • 8.3 充分利用 Explain 和 Profiling
        • 8.4 合理设计并利用索引
        • 8.5 Join的实现原理及优化思路
        • 8.6 ORDER BY、GROUP BY和DISTINCT的优化
        • 8.7 小结
      • 第9章 MySQL数据库Schema 设计的性能优化
        • 9.0 引言
        • 9.1 高效的模型设计
        • 9.2 合适的数据类型
        • 9.3 规范的对象命名
        • 9.4 小结
      • 第10章  MySQL Server性能优化
        • 10.0  引言
        • 10.1  MySQL安装优化
        • 10.2  MySQL日志设置优化
        • 10.3  Query Cache 优化
        • 10.4  MySQL Server 其他常用优化
        • 10.5  小结
      • 第11章  常用存储引擎优化
        • 11.0  引言
        • 11.1  MyISAM存储引擎优化
        • 11.2  InnoDB 存储引擎优化
        • 11.3  小结

      第3篇  架构设计篇

        • 第12章  MySQL可扩展设计的基本原则
          • 12.0  引言
          • 12.1  什么是可扩展性
          • 12.2  事务相关性最小化原则
          • 12.3  数据一致性原则
          • 12.4  高可用及数据安全原则
          • 12.5  小结
        • 第13章  可扩展性设计之 MySQL Replication
          • 13.0  引言
          • 13.1  Replication 对可扩展性设计的意义
          • 13.2  Replication 机制的实现原理
          • 13.3  Replication常用架构
          • 13.4  Replication 搭建实现
          • 13.5  小结
        • 第14章  可扩展性设计之数据切分
          • 14.0  引言
          • 14.1  何谓数据切分
          • 14.2  数据的垂直切分
          • 14.3  数据的水平切分
          • 14.4  垂直与水平联合切分的使用
          • 14.5  数据切分及整合方案
          • 14.6  数据切分与整合中可能存在的问题
          • 14.7  小结
        • 第15章  可扩展性设计之 Cache与Search的利用
          • 15.0  引言
          • 15.1  可扩展设计的数据库之外延伸
          • 15.2  合理利用第三方Cache解决方案
          • 15.3  自行实现Cache服务
          • 15.4  利用Search实现高效的全文检索
          • 15.5  利用分布式并行计算实现大数据量的高性能运算
          • 15.6  小结
        • 第16章  MySQL Cluster
          • 16.0  引言
          • 16.1  MySQL Cluster介绍
          • 16.2  MySQL Cluster环境搭建
          • 16.3  MySQL Cluster配置详细介绍(config.ini)
          • 16.4  MySQL Cluster基本管理与维护
          • 16.5  基本优化思路
          • 16.6  小结
        • 第17章  高可用设计思路及方案
          • 17.0  引言
          • 17.1  利用 Replication 来实现高可用架构
          • 17.2  利用MySQL Cluster实现整体高可用
          • 17.3  利用DRBD保证数据的高安全可靠
          • 17.4  其他高可用设计方案
          • 17.5  各种高可用方案的利弊比较
          • 17.6  小结
        • 第18章  高可用设计之MySQL监控
          • 18.0  引言
          • 18.1  监控系统设计
          • 18.2  健康状态监控
          • 18.3  性能状态监控
          • 18.4  常用开源监控软件
          • 18.5  小结
        • 附录A  实验测试 Schema 创建脚本
        • 附录B  MySQL部分系统 参数说明及设置建议
        • 附录C  MySQL部分状态说明

        本书最终效果图如下:
        MySQL性能调优与架构设计

        , , , ,