出版时间:2010年1月 出版社:电子工业出版社 作者:Baron Schwartz,Peter Zaitsev,Vadim Tkachenko,Jeremy D.Zawodny,Arjen Lent,Derek J.Ballin 页数:560 译者:王小东,李军,康建勋
Tag标签:无
前言
对于这本书,我们在头脑里有好几个目标。其中的大多数源于我们一直想要有一本在书架上寻找却总是找不到的神话般完美的MySQL书,其他几个目标来自于想把我们的经验分享给那些把MySQL用在他们环境中的用户。我们不想让这本书只是一本SQL入门书,不想让这本书的书名随意使用一些时限词语来开始或结尾(例如“……只需30天”,“7天内提高……”),也不想说服读者什么。最主要的,我们希望这本书能帮助你把技能提高一个层次,用MySQL构建出快速、可用的系统——它能解答类似这样的问题:“我怎么才能搭建起一个MySQL服务器集群,它能处理数以百万计的请求,哪怕有几台服务器宕机时,它仍然能正常提供服务?”我们编写本书的着眼点不仅在于迎合 MySQL应用开发人员的需求,还在于满足MySQL管理员的严格要求,管理员需要不管开发人员和用户怎么折腾,服务器都能挂在线上正常运行。如前所述,我们假定你已经具备了一些MySQL的相关经验,比较理想的就是你已经读过一本MySQL方面的入门书。我们同样也假定你具备一些常用的系统管理、网络和 Unix风格操作系统等方面的经验。经过修订、扩充后的第二版对于第一版里的所有主题都作了更深入的讲解,并增加了一些新的主题。这也部分地反映了自本书首次出版之后,MySQL世界发生的一些变化:MySQL现在已经成为软件中更大更复杂的一部分。如同其重要性一样,它的普及度也提高了:MySQL社区变得更加庞大,更多的大企业把MySQL应用到他们的关键业务系统中。自本书第一版发布以后,MySQL已被广泛认同可作为企业级应用。人们也越来越多地把MySQL用在互联网应用上,这些应用若发生故障和其他问题都无法被掩饰过去,也不能被容忍。作为我们努力的结果,第二版的内容着重点跟第一版略有不同。我们会像强调性能一样,强调可用性和准确性,这部分由于我们自己也把MySQL用在那些运作着巨大金额的业务系统里。我们对Web应用也有着切身体验,MySQL在这方面正变得越来越普及。第二版里会谈论到在MySQL周边扩展的世界,而这个世界在第一版编写时还不存在。 我认识 Peter、Vadim和Arjen已经有很长一段时间,见证了他们长久以来在自己项目上使用MySQL和为各类高标准客户调优MySQL服务器的历史。另一方面,Baron为增强MySQL的功能编写了许多客户端软件。作者们的专业背景清晰地反映在了彻底重写《High Performance MySQL: Optimizations, Replication,Backups,and More》第二版的工作里。这本书不只告诉你如何优化工作,从而能比以前更好地使用MySQL,作者们还做了大量额外的工作,亲自编制执行基准测试,并将结果发布出来以佐证他们的观点。这些信息让读者可以借此获悉许多很有价值的MySQL内部工作机制——这在其他书中是难以得到的;同样,这些信息也能帮助读者避开那些在将来会引发糟糕性能的错误。我不但要向刚刚接触MySQL服务器,正准备编写第一个MySQL应用的初学者推荐这本书,还要向富有经验的用户推荐这本书,他们已经对基于MySQL的应用作过一些调优的工作,现在正需要在这个方向上再前进“一小步”。-Michael Widenius2008年3月 在进入MySQL世界之前,先照例介绍一下MySQL的历史(况且本书里也没提到这些)。真正以MySQL为名的数据库是从1994年开始开发的,并于1995年第一次呈现在小范围的用户面前,它的开发者刚好不是美国人,而是两个瑞典人Michael Widenius 和 David Axmark。那时的MySQL还非常简陋,除了在一个表上做一些Insert、Update、Delete和Select操作,恐怕没有更多的功能给用户使用。这种情况直到2001年左右发布3.23版的时候,才有了显著的进步——它支持大多数的基本SQL操作了,而且还集成了我们现在熟识的 MyISAM和InnoDB存储引擎。然后又是几年不断完善的过程,到了2004年10月,这个夯实基础的过程到达了顶峰——4.1这个经典版本发布了。次年10月,又一里程碑式的MySQL版本发布了,在新出的MySQL 5.0 里加入了游标、存储过程、触发器、视图和事务的支持,准备进入中高端应用领域。在5.0之后的版本里,MySQL明确地表现出迈向高性能数据库的发展步伐。到今天,MySQL已经上升到了600多万的装机量,著名的WordPress、phpBB都以MySQL为后台数据库,很多大型的WWW应用例如Wikipedia、Google和Facebook,也都采用了MySQL作为它们的数据存储系统。反观国内,鉴于心照不宣的原因,MySQL的普及程度还不如SQL Server。就我这些年来的所见所闻而言,一直作为MySQL黄金搭档的PHP都常常使用别的数据库,更别提其他开发语言了。好在那些上规模企业,尤其是外资企业里,多数明智的IT负责人在项目前期都会提议使用MySQL,原因之一是它是免费的,一般不会产生授权费用问题,原因之二是它足够用了,不是吗?你想要的增、删、改、联接(Joint)、嵌套查询它都有;你想要的视图、存储过程、触发器、事务它也有;如果你要集群,它也能提供。但是,使用MySQL是一回事,用好MySQL又是另外一回事。市面上更多的是关于MySQL开发的书籍,这些书籍的很多篇幅都花费在SQL语句的学习上。若要获得关于MySQL性能提高方面的资料,我们只能在网上的各个论坛或博客上披沙拣金了,而本书则系统性地从各个方面讲述一个高性能MySQL应用应该怎么来做。作者们都是这方面的行家里手,所以内容也是全面、充实,无论是架构师设计师、程序开发人员,还是系统管理员都能找到感兴趣的方面。在阅读正文前,最好能够先读一下作者精心编写的前言部分,通过它把握整本书内容的构成方式和相互关联,之后,带有目的性地阅读本书会更富有成效。本书由李军、王小东、康建勋三人合作翻译完成,其中,康建勋翻译第1章和第2章前31页;王小东翻译第2章的后17页,以及第3章至第8章;李军翻译了序言、前言、第 9章至第14章、所有附录,以及作者介绍、封面、封底等内容,并撰写了内容简介。翻译的过程也是译者与编辑、审阅人员之间交互的过程,在这个过程里,编辑徐定翔老师,审阅人金照林老师、柳安意老师给予了我们很大的帮助。如果说译者是生产毛坯的工匠,那么他们就是把毛坯打磨成精品呈现给读者的人,在此十分感谢他们!同样地,我们也要感谢家人和朋友。我们把那些本来应该陪伴家人出游,或者参加朋友聚会的时间,都“自私”地用在翻译本书上了。他们都比较宽容,一句“到时要请客哦”就原谅了我们,谢谢他们的支持!最后,得向读者们说声抱歉,由于术业专攻不同、识见浅深有别之故,译文中难免会有诘屈聱牙、词不达意甚至疏误之处,还请读者不吝指正。译者2009年12月
内容概要
《高性能MySQL(第2版)》荣获2009年Jolt图书大奖,是不可多得的分享MySQL实用经验的图书。它不但可以帮助MySQL初学者提高使用技巧,更为有经验的MySQL DBA指出了开发高性能MySQL应用的途径。《高性能MySQL(第2版)》包含14章和4个附录,内容覆盖MySQL系统架构、设计应用技巧、SQL语句优化、服务器性能调优、系统配置管理和安全设置、监控分析,以及复制、扩展和备份/还原等主题,每一章的内容自成体系,适合各领域技术人员作选择性的阅读。
书籍目录
序 I前言 III第1章:MySQL架构 11.1 MySQL的逻辑架构 11.2 并发控制 31.3 事务 61.4 多版本并发控制 121.5 MySQL的存储引擎 14第2章:寻找瓶颈:基准测试(Benchmarking)与性能分析(Profiling) 322.1 为什么要进行基准测试 332.2 基准测试策略 332.3 基准测试工具 422.4 基准测试样例 442.5 性能分析(Profiling) 542.6 分析操作系统 76第3章:架构优化和索引 803.1 选择优化的数据类型 803.2 索引基础知识 953.3 高性能索引策略 1063.4 索引实例研究 1313.5 索引和表维护 1363.6 正则化和非正则化 1393.7 加速ALTER TABLE 1453.8 对存储引擎的说明 149第4章:查询性能优化 1524.1 基本原则:优化数据访问 1524.2 重构查询的方式 1574.3 查询执行基础知识 1604.4 MySQL查询优化器的限制 1794.5 优化特定类型的查询 1884.6 查询优化提示 1954.7 用户定义变量 198第5章:MySQL高级特性 2045.1 MySQL查询缓存 2045.2 在MySQL中存储代码 2175.3 游标 2245.4 准备语句 2255.5 用户自定义函数 2305.6 视图 2315.7 字符集和排序规则 2375.8 全文搜索 2445.9 外键约束 2525.10 合并表和分区 2535.11 分布式(XA)事务 262第6章:优化服务器设置 2656.1 配置基础知识 2666.2 通用调优原则 2716.3 MySQL I/O调优 2816.4 MySQL并发调优 2956.5 基于工作负载调优 2986.6 每联接(Per-Connection)设置调优 304第7章:操作系统和硬件优化 3057.1 什么限制了MySQL的性能 3067.2 如何为MySQL选择CPU 3067.3 平衡内存和磁盘资源 3097.4 为从服务器选择硬件 3177.5 RAID性能优化 3177.6 存储区域网络和网络附加存储 3257.7 使用多个磁盘卷 3267.8 网络配置 3287.9 选择操作系统 3307.10 选择文件系统 3317.11 线程处理 3347.12 交换 3347.13 操作系统状态 336第8章:复制 3438.1 复制概述 3438.2 创建复制 3478.3 揭示复制的真相 3558.4 复制拓扑 3628.5 复制和容量规划 3768.6 复制管理和维护 3788.7 复制问题和解决方案 3888.8 复制有多快 4058.9 MySQL复制的未来 407第9章:伸缩性与高可用性 4099.1 术语 4109.2 MySQL的伸缩性 4129.3 负载平衡 4369.4 高可用性 447第10章:应用层面的优化 45710.1 应用程序性能概述 45710.2 Web服务器的议题 46010.3 缓存 46310.4 扩展MySQL 47010.5 可替代的MySQL 471第11章:备份与还原 47211.1 概况 47311.2 要权衡的事项 47711.3 管理和备份二进制日志 48611.4 数据备份 48811.5 从备份中还原 49911.6 备份和还原的速度 51011.7 备份工具 51111.8 脚本化备份 518第12章:安全 52112.1 术语 52112.2 账号的基本知识 52212.3 操作系统安全 54112.4 网络安全 54212.5 数据加密 55012.6 在Chroot环境里使用MySQL 554第13章:MySQL服务器的状态 55713.1 系统变量 55713.2 SHOW STATUS 55813.3 SHOW INNODB STATUS 56513.4 SHOW PROCESSLIST 57813.5 SHOW MUTEX STATUS 57913.6 复制的状态 58013.7 INFORMATION_SCHEMA 581第14章:用于高性能MySQL的工具 58314.1 带界面的工具 58314.2 监控工具 58514.3 分析工具 59514.4 MySQL的辅助工具 59814.5 更多的信息来源 601附录A:大文件传输 603附录B:使用EXPLAIN 607附录C:在MySQL里使用Sphinx 623附录D:锁的调试 650索引 659
图书封面
图书标签Tags
无
评论、评分、阅读与下载