高性能MySQL

出版时间: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

评论、评分、阅读与下载


    高性能MySQL PDF格式下载


用户评论 (总计42条)

 
 

  •   谨慎购买,可能是译者水平的问题,很多错误!我看了4页发现3出错误,一处把myisam_sort_buffer_size写成myisam_buffer_size一处语义错误,一处Linux路径错误,没有一定mysql+Linux基础的,建议远离这本书.还是凑合着看原版书吧
  •   已经看了一半了,感觉挺好的,就是里面有错字,漏字,还好,不多,
  •   书里描述了很多关于MYSQL性能调优的技术细节,非常适合一线工作的DBA和软件开发人员使用,不太适合初学者。
  •   我承认,我英语不牛,所以买了中文版,但连我这种英语水平的人都能看得出这本书翻译错误连篇,真怀疑他们是不是直接Google翻译-打印-装订的。
  •   书的内容还不错,就是错字有些多,看的时候要小心了。最好是有一定的数据库基础才看,要不然被错别字忽悠了还在那里偷着乐呢。
  •   我是一个爱书的人,这本书的封面安装有点错位。看着心里很不爽,而且以前买卓越的书,包装都很好,这次买的书包装和物流很差,买来书都有了很多划痕。而且激光防伪标志有明显的更换迹象,不知道什么原因。
  •   书的质量不错,关于MySQL的知识介绍的非常全面。
  •   内容不错,书的纸质也不错
  •   还不错,买了没怎么看。
  •   DBA,必备学习用...
  •   讲的很详细,虽然有些翻译不怎么样,但不影响阅读,适合有一定经验的dba阅读
  •   没想到第一次在卓越上买书,竟然是一本二手书,非常的明显,书都破损了
  •   书不错,纸张很舒服,内容也很不错。但是封面坏掉了。。。
  •   到货很快 服务态度好 书的包装很很好 内容还没看 应该不会很差
  •   在日常工作中帮助很大,开拓思路,但需要有一定基础才行。
  •   内容很充实,很好。正在阅读中,感觉对工作有很大帮助。
  •   内容较深,一般用户用处不大。收到时封面的灰尘较多。发送的速度还是挺快的,2-3天就到了。
  •   比MySQL手册还要更贴近处理问题,这本书介绍了不少监测与测试数据库方法,很实用!
  •   书确实不错,唯一美中不足的是:老外的书,翻译过来难免有些地方佶屈聱牙。英文好的话还是看英文版吧,英文不行就凑合吧。
  •   内容比较使用
  •   买了4本,没有一本是新的
  •   内容很丰富,值得深入研究
  •   相对来说不错的一本
  •   价格便宜,送货很快!!!
  •   店庆抢购的,很给力
  •   高性能MYSQL第二版
  •     整体还好,内容很多很光,要有一点点数据库方面的基础看更好,不过翻译的不是很地道。前面5章是基础,重点在3,4,5章,以后再看看这本书的第三版以及《 SQL Performance Explained 》。
  •     我买的洋文版的,作为PHPer,看这本书够了,介绍的很详细有木有!!
      DBA和程序员必备,好了我就想说这么多,还想要多少个字才够嘛!?????,还想要多少个字才够嘛!?????,还想要多少个字才够嘛!?????,还想要多少个字才够嘛!?????,还想要多少个字才够嘛!?????,还想要多少个字才够嘛!?????
  •     几个网站都缺货!
      几个网站都缺货!
      几个网站都缺货!
      抱歉,你的评论太短了
      抱歉,你的评论太短了
      抱歉,你的评论太短了
      抱歉,你的评论太短了
      抱歉,你的评论太短了
      抱歉,你的评论太短了
      抱歉,你的评论太短了
  •     在MySQL社区,这是一本重量级的书,我不知道出版社是怎么挑选译者的,但是很明显,我个人的意见,这次挑选非常的失败。书中98页倒数第4行的"binary search"的翻译(二进制搜索)已经道出了一切,但凡学过计算机的,我估计都不能做出这样的翻译。在计算机领域,二进制是一个专门的术语,有特定的含义。我不仅怀疑译者根本没学过"binary search"算法,以至于只能按字面翻译,我甚至怀疑他们连“二进制”的含义可能也不懂,找这样的人来翻译,真是天大的笑话。
      
      再举一个术语的翻译“secondary index”,书中的译法是“第二索引”,暂且不论惯用的“二级索引”是否是一个标准的译法,假如在主键之外,还有B,C两个索引,如果B叫“第二索引”,那么C就应该叫“第三索引”了?为什么C也叫“第二”呢,难道是并列第二?“第二”在汉语中是一个意思很明确的词,你当然可以说“第二”也能表示“二级”的意思,这种牵强的脱离通用语义的翻译真是对翻译标准“信雅达”中“达”字的讽刺。
      
      关于“达”我们还可以找一个例子,介绍coverring index的部分,译文第96页,原文第124页。原文是“For example,the sakila.actor table uses InnoDB and has an index on last_name, so
      the index can cover queries that retrieve the primary key column actor_id, even
       though that column isn’t technically part of the index”,译文是“例如,sakila.actor表适用了InnoDB并且在last_name上有索引,因此,即使该列不是索引的一部分,索引页可以覆盖取得主键actor_id的查询”,原文读来没有任何的歧义,译文却变了样,第一遍读的时候,你能分辨出“即使该列不是索引的一部分”中的“该列”是指代的“last_name"呢?还是后面出现的"actor_id”呢?将代词放在指代的名词之前出现,这绝对是对人的智力的挑战,即便是诗歌,我也没见汉语中有多少这样的用法,遑论技术性文字。在原文中"that column"这个代词出现在了"actor_id"之后,不知道为什么在译文中,代词就钻到了指代的名词之前。
      
      如果可以抛开“达”,还要争辩词的译法是“见仁见智”的,那么对“信”的违背则已经使这本重量级巨著的翻译失去了最基本的存在价值,随便举两个例子:
      1. 4.6查询提示优化对HIGH_PRIORITY的描述,译本第152页,原书第195页,原文是“HIGH_PRIORITY tells MySQL to schedule a SELECT statement before other statements that may be waiting for locks, so they can modify data.”,译文是“HIGH_PRIORITY告诉MySQL将SELECT语句放在其他语句的前面,以便它修改数据”,原文中的“so they can modify data"变成了"以便它可以修改数据",复数形式的they变成了单数形式的"它",这个改变虽然细微,但直接影响了这个位置的代词所指代的主语,这个代词到底是"SELECT statement"呢?还是"other statements that may be waiting for locks"?原文中当然是其他能modify data的statements,而到了疑问中,变成了"SELECT statement",问一个菜鸟级的问题,select statement能modify data吗?
      
      2. 还是4.6查询提示优化,对DELAYED的描述,译文第152页,原文第196页。原文是"It lets the statement to which it is applied return immediately and places the inserted rows into a buffer, which will be inserted in bulk when the table is free",译文是"应用了这个提示的语句会立即返回并将待插入的列放入缓冲区,在表空闲的时候再执行插入",粗看没什么问题,细看问题一大堆。
      2.1 在原文中,主语是it,指代的是"DELAYED"这个hint,到了译文中,主语从"提示"本身变成了"应用了这个提示的语句",于是在原文中的"delayed"这个hint一方面使语句立即返回,另一方面使MySQL在后台处理被缓存的数据两层意思变成了语句一方面返回,另一方面“将待插入的列放入缓冲区”,到底是"DELAYED"使数据被插入buffer,还是应用了"DELAYED"的语句使数据被插入了buffer,区别虽然微妙,但区别就是区别,译文的意思与原文已差之毫厘,谬以千里。
      2.2 原文中"which will be inserted in bulk..."是一个被动语态,指数据被插入,主语没有明确指出,在上下文环境中当然是数据库;而到了译文中,“在表空闲的时候再执行插入”是一个主动的语态,“谁”执行了插入?如果和上句连起来,很容易理解成“应用了这个提示的语句在表空闲的时候再执行插入”,这不是扯淡吗?当然,稍微有点数据库常识的人都不会这样理解,但原文原本语义清晰,翻译过来却主语混乱,实在令人难以接受。
      2.2 在原文中的"rows",一个复数形式的词,到了译文中,变成了"列",假如说复数变单数还能接受,把"row"翻译成"列"真是天才的创举。
      2.3 原文中"will be inserted in bulk when ..."明确指出了insert的方式是"in bulk",但是这个信息在译文中丢失了。
      
      类似的问题简直处处可见,原文的文字简洁清晰,非常容易理解,但我读到的译文却非常难以理解,更可恨的是,原文中大量的信息被扭曲,抛弃。“信雅达”这三标准没有一个做到。我个人的总结是,这个译本的水平跟中国足球的水平一样,能把球停在百米开外,一个字,糙。
      
      客观地说,这本书至少将MySQL优化的知识在中国的传播门槛大大降低,但咱不是黄莺,不会唱赞歌,既然是书评,就是要来挑刺的,看不到刺,容不得刺,电子工业永远没有赶上O'Relly的机会,中国的技术书籍永远都只能是菜鸟水平。
  •   悲剧,没查评论直接买了中文版。。。。
  •   我越看越别扭啊。。完全没办法仔细琢磨……
    只能粗粗翻一遍过去了
  •   还是楼主看的仔细,学习了,赞一个!
  •   我刚看了第一章,看得很别扭,很纠结。
  •   实在受不了,我也去啃e文了。。
  •   这边书看的我崩溃!!三位译者,别再糟蹋好东西了行吗!!
    出版社要重印还是请人从头翻译吧,这次翻译的勘误已经漫天飞了!
  •   我甚至怀疑里面的人 小学毕业了没有,里面的话按中文逻辑都解释不清楚。看的我想骂娘。覆盖索引那节翻译的前后矛盾,真是佩服译者的中文水平,真TM牛逼。中文写的中国人都看不懂。
  •   这两周在看这本垃圾书(翻译本),向来对它的翻译心存质疑。今天看到一个地方,查了一下原版,怒了。竟然“是和否”都不分。2012年1月2版的书中,第190页,原文是203页。有写道: but can be useful if you are not allowed to install any new programs on a machine and can enable ssh on your servers.
    翻译竟然是:但如果机器上不能安装新程序且服务器上无法启用ssh。。。。 原文是can enable。。。它的翻译竟然是“无法启用”。。。。在翻查原文的时候在这里想了好久。
    还想吐槽一下,它那书上关联词有十分严重的问题,全是E 文的一套。例如,有“虽然"就没有"但是",有"尽管"就没有"可是"。 在这里只想说,某些人糟蹋了一本好书。。糙。
  •   还好没买。。。
  •   翻译的质量确实不好, 应该是那种老师带着学生当毕业设计那样翻译完成的
  •   binary search 二进制搜索?什么搜索法?
  •   主要的几位译者都是阿里的高级DBA乃至MySQL源码级开发人员,不过似乎审阅态度以及翻译水平还需提高,期待下一版翻译,毕竟如此巨著~
 

250万本中文图书简介、评论、评分,PDF格式免费下载。 第一图书网 手机版

京ICP备13047387号-7