高性能MySQL(第4版) ( etc.) (Z-Library)
sql
No Description
299
Views
0
Downloads
0.00
Total Donations
Registered users can read the full content for free
Register as a Gaohf Library member to read the complete e-book online for free and enjoy a better reading experience.
Page
1
(This page has no text content)
Page
2
版权信息 C O P Y R I G H T 书名:高性能MySQL:第4版 作者:(美)西尔维亚·博特罗斯(Silvia Botros),(美)杰里米·廷利 (Jeremy Tinley) 译者:宁海元,周振兴,张新铭 出版社:电子工业出版社 出版时间:2022年10月 ISBN:9787121442575 字数:471千字 版权方:电子工业出版社有限公司 版权所有·侵权必究
Page
3
内容简介 《高性能MySQL》一直是MySQL领域的经典之作,影响了一代又一 代的DBA和技术人员,从第3版出版到第4版出版过去了近十年,MySQL 也从5.5版本更新到了8.0版本。第4版中增加了大量对MySQL 5.7和8.0 版本新特性的介绍,删除了一些在新版本中已经废弃或者不再常用的 功能,还增加了对云数据库的介绍,减少了在官方文档中已有的基础 使用和配置相关的内容。这些年,MySQL经过在大量大规模互联网场景 中的应用验证,使得本书在继续关注高性能之外,还用了较多的篇幅 来介绍如何实现MySQL的大规模可扩展应用和合规性问题,这是相比第 3版最大的不同,也是本书封面上所写的“经过大规模运维验证的策 略”的体现。 本书适合数据库管理员(DBA)阅读,也适合系统运维和开发人员 参考学习。不管你是数据库新手还是专家,相信都能从本书中有所收 获。
Page
4
O'Reilly Media, Inc.介绍 O'Reilly以“分享创新知识、改变世界”为己任。40多年来我们一直 向企业、个人提供成功所必需之技能及思想,激励他们创新并做得更 好。 O'Reilly业务的核心是独特的专家及创新者网络,众多专家及创新者 通过我们分享知识。我们的在线学习(Online Learning)平台提供独 家的直播培训、互动学习、认证体验、图书、视频等等,使客户更容 易获取业务成功所需的专业知识。几十年来O'Reilly图书-直被视为学 习开创未来之技术的权威资料。我们所做的一切是为了帮助各领域的 专业人士学习最佳实践,发现并塑造科技行业未来的新趋势。 我们的客户渴望做出推动世界前进的创新之举,我们希望能助他们一 臂之力。 业界评论 “O'Reilly Radar博客有口皆碑。” —Wired “O'Reilly凭借一系列非凡想法(真希望当初我也想到了)建立了数 百万美元的业务。” —Business 2.0 “O'Reilly Conference是聚集关键思想领袖的绝对典范。” CRN “一本O'Reilly的书就代表一个有用、有前途、需要学习的主题。” —Irish Times “Tim是位特.立独行的商人,他不光放眼于最长远、最广阔的领域, 并且切实地按.照Yogi Berra的建议去做了:‘如果你在路上遇到岔路 口,那就走小路。’回顾过去,Tim似乎每一次都选择了小路,而且有 几次都是一闪即逝的机会,尽管大路也不错。” —Linux Journal
Page
5
本书赢得的赞誉 我喜欢这个新版本,它将重点转向了现代、务实的通过团队成员传递 商业价值的思维模式。它改变了前几版只关注复杂的内部结构和理论 从而导致收益缩减的短视,转向了更全面的视角。本书仍然覆盖关于 “数据库如何工作”的知识,但现在是以一个全新的、人性化的观点 呈现的,这是非常有必要的。 —Baron Schwartz,《高性能MySQL》第2版和第3版的主要作者 自17年前第1版面世以来,《高性能MySQL》一直是MySQL世界的重要组 成部分。MySQL一直在向前发展,Silvia和Jeremy做了一项伟大的工 作,使这本书的内容与现代MySQL保持同步。 —Jeremy Cole 本书第4版更新了现代实践经验,为MySQL管理员和开发者提供了丰 富、可靠的建议。 —Shlomi Noach,PlanetScale数据库工程师 《高性能MySQL》(第4版)有了新的关注点,它不再只是深挖MySQL的 每一点性能,我们现在拥有一个由工具和供应商组成的大型生态系 统。Silvia和Jeremy完美地详述了MySQL如何适应新的局面。不管你用 什么方式使用MySQL,这本书都是必备的。 —Sugu Sougoumarane,Vitess联合创始人,PlanetScale CTO Silvia和Jeremy做了一项了不起的工作,他们既保留了本书的核心内 容,又对其进行了更新,以覆盖快速变化的MySQL世界。 —Peter Zaitsev,Percona创始人兼CEO,《高性能MySQL》(第3 版)作者之一 《高性能MySQL》从第2版引入国内以来一直是业界经典。宁海元翻译 的第3版让大部分MySQL从业人员受益匪浅,十年后的今天我们又迎来 了《高性能MySQL》的第4版。十年来,中国的MySQL发展从部分互联网 场景发展到全领域场景,本书也新增了大量云化、规模化、可扩展等 特性的内容,通俗易懂又专业深入,是时候更新一下你的书架了。
Page
6
陈栋,沃趣科技创始人&CEO 岁月洗练,历久弥新。高性能是一个永恒的话题和不懈的追求。在 MySQL领域,本书无疑是最佳的表率之一。从互联网到企业级应用,从 独立部署到虚拟化和云计算,十年之间,天翻地覆,然而MySQL的魅力 有增无减。数据库性能涉及很多复杂的技术领域,而本书娓娓道来深 入浅出的风格让人着迷,使得系统性的理解水到渠成。当我读到 Performance Schema常因性能影响而被建议关闭的主题时,仿佛看到 与当年Oracle同样的演进历程,MySQL逐渐丰富的可观测性,已经使其 性能诊断能力接近了商业数据库的水准,臻至大成。 盖国强,云和恩墨创始人,鲲鹏MVP 《高性能MySQL》已经是MySQL DBA的案前必备图书了,这本书不仅教 会了大家很多MySQL的最佳实践,同时还从内核实现层面深入地解释原 理,做到了知其然更知其所以然。所以这不仅是一本很好的MySQL工具 书,同时也是有志于从事数据库内核研发的朋友很好的参考资料。 黄东旭,PingCAP联合创始人兼CTO 无论是在中国还是全世界,MySQL都是当下最流行、使用最广泛的开源 关系数据库。《高性能MySQL》是MySQL社区非常有影响力的一本书, 第4版使得这本书与近十年MySQL的发展和实践保持了高度同步。 阳振坤,OceanBase数据库创始人 从2009年开始,在过去的十几年里,《高性能MySQL》一直陪伴着我。 它也是我向MySQL爱好者推荐最多的一本书,甚至超过了我自己写的 《MySQL运维内参》。它可以帮助MySQL相关人员把自己的数据库管理 和运维能力快速提升到相对较高的水平并解决工作中碰到的实际问 题,是一本不可多得的经典之作。 近几年来,MySQL的发展很快,在内核层的变化也很大,同时伴随着云 原生的发展,MySQL也是云上数据库的主流产品。本书第4版恰逢其时 地增加了相应的内容,在技术深度和知识广度上做到了很好的平衡。 非常感谢原作者和译者所做的努力,期待更多的人通过本书获得更多 的MySQL知识。通过从本书中学到的知识,在工作中解决实际问题,这 是对为本书付出劳动的人的最好回馈。
Page
7
周彦伟,极数云舟创始人,Oracle MySQL ACE Director,中国计 算机行业协会数据库专委会会长
Page
8
推荐序 随着互联网行业以及云计算产业的高速发展,MySQL成为世界范围内以 及中国数据库领域最流行的开源数据库。在几乎所有大型互联网业务 场景中,MySQL都是业务架构的核心组件之一。广泛的应用也推动了 MySQL在过去十年的高速发展,MySQL社区相继推出了5.6、5.7、8.0版 本,从性能、可扩展性、安全性、稳定性、可维护性、易用性等维度 都有了非常大的发展。《高性能MySQL》(第3版)是2012年出版的, 最新版本的《高性能MySQL》(第4版)在上一版内容的基础上延续了 之前的经典内容,包括架构设计、优化、高可用等内容,同时新增了 云数据库、扩展性等过去十年发展的相关内容,另外还增加了MySQL过 去十年里的新版本(包括5.7、8.0版本)的新特性。 MySQL是当下最流行的开源数据库之一,本书从实践的角度涵盖了数据 库系统的架构设计、锁、性能管理、高可用等内容,除了可作为MySQL 的参考书之外,也可以作为数据库系统原理和设计的一个实现参考。 云数据库已流行多年,本书最新版对云数据库的内容也做了相应的调 整。例如,对数据库的安装、配置、监控搭建等基础操作内容进行了 大幅缩减,增加了对云端具体操作的介绍。因此,本书也非常适合作 为面向云数据库系统开发者的一本MySQL参考图书。如本书的名字所 述,本书在内核设计、性能优化方面,依旧是着墨最多的部分,深入 介绍了锁管理、并发控制、Performanc Schema使用、索引优化等内核 机制,可以帮助企业的DBA、想深入了解MySQL优化的开发者,以及云 数据库开发者更高效地使用和拓展MySQL。 本书的译者是云数据库领域和MySQL数据库的资深专家,有着很强的技 术能力、行业实践以及业务洞察,同时具备非常出色的业务架构设计 和商业化经验。在深入理解原著的基础上,译者们结合自己的洞察和 经验提供了出色的专业化中文版本,是MySQL领域不可多得的一本必读 书目。 李飞飞(飞刀),ACM/IEEE Fellow,阿里云数据库负责人
Page
9
译者序 十年时光,转瞬即逝;重译经典,心境迥异。 2012年,电子工业出版社博文视点公司的张春雨找我来组织翻译《高 性能MySQL》的第3版;2022年,还是张春雨找我来组织翻译《高性能 MySQL》的第4版。2012年我还在淘宝DBA团队,淘宝核心交易系统刚刚 完成“去IOE”。十年过去,国内的数据库江湖已经换了模样,云数据 库成为很多公司的选择,国产数据库创业公司也此起彼伏,而MySQL依 然高居DB-Engines排行榜亚军,还是最受欢迎的开源数据库。根据中 国信息通信研究院的《数据库发展研究报告(2021年)》,截至2021 年6月,国产关系数据库产品共有81个,其中23个是基于MySQL二次开 发的,占比为28.4%。 从2012年开始,我从淘宝DBA团队到手机淘宝数据团队,再到阿里云数 加团队,直到2015年年底离职出来联合创立袋鼠云。至今在数据领域 创业也有6年多了,目前主要管理袋鼠云集团旗下的两家子公司,分别 是聚焦数字孪生的易知微和聚焦可观测业务运维的云掣。当年淘宝DBA 团队的很多成员如今也在创业的路上,他们的工作也和MySQL数据库有 或多或少的关系,比如本书的另外两位译者周振兴和张新铭。 在本书第3版出版的时候,MySQL还是5.5版本。此后在2015年发布的 5.7版和2018年发布的8.0版是两个重要的版本,目前的最新版本是 2022年4月发布的8.0.29。本书的最新版本中增加了大量对MySQL 5.7 和8.0版本新特性的介绍,删除了一些在新版本中已经废弃或者不再常 用的功能。另外,本书还增加了对云数据库的介绍,减少了在官方文 档中已有的基础使用和配置相关的内容。这些年,MySQL在互联网的大 量场景中被大规模地应用和验证,使得本书第4版在继续关注高性能之 外,还使用了更多的篇幅来介绍如何实现MySQL的大规模可扩展应用, 这是相比第3版最大的不同,所以本书还增加了新卖点“经过大规模运 维验证的策略”。 本书的翻译依然是团队合作的结晶,其中我负责第1、2、3、4、5、 6、13章和附录的翻译,周振兴负责第7、8、9、10章的翻译,张新铭
Page
10
负责第11、12章的翻译,另外一位同事刘开阳也参与了部分章节的翻 译和审稿工作。在第3版的基础之上,这次整体工作的进度还比较顺 利。但创业公司各种事务繁忙,译者们的时间精力都有限,难免存在 疏漏之处,恳请读者不吝指出。 我要感谢易知微和云掣团队的同事,让我能够在工作之余抽出时间完 成本书的翻译。当然更要感谢我的妻子Lalla,在我以创业和翻译为借 口之际,毫无怨言地照顾我和我们的孩子则一的生活。是的,十年之 后,我们有了新的家庭成员,这个月他已经三岁啦! 宁海元,易知微&云掣CEO 2022年6月于未来科技城
Page
11
序 自近20年前《高性能MySQL》(第1版)问世以来,它已经成为每一位 被新聘成为数据库管理员、系统工程师或数据库开发人员桌上的第一 本书。 最初当Jeremy Zawodny和Derek Balling着手写一本关于大规模运行 MySQL的书,为多年的谜题带来清晰的思路和结构时,它注定会成为 MySQL世界的经典。经过十几年的多版更新,有些原始内容和后续更新 一直有效,有些则不然。 MySQL本身在进步,MySQL社区改变了很多,我们使用MySQL的方式也改 变了。现在,在第4版中,Silvia和Jeremy承担了艰巨的任务,要把这 本经典图书更新到当今时代,他们是完成这项任务的最佳搭档。 我在MySQL社区工作的这段时间(现在已经超过20年了!),始终不变 的一件事情,就是变化。每个人使用MySQL(或者说通用数据库)的方 式都略有不同,对它有不同的期望。每个人都会做出一些好的决定, 也会做出一些善意但值得怀疑的决定。当然,也总会做出一些糟糕的 决定。有时,进步是容易的,但有时需要明智的建议,以及直接从专 家那里学到思考问题的新方法。 Silvia和Jeremy就是这样的专家。从体系结构、优化、复制、备份等 各个方面,我们都将受益于他们在MySQL领域分享的丰富经验。在新的 第4版中,许多主题得到了新的处理,许多过时的知识被删除,许多错 误被纠正,这些工作最终为本书带来了新的内容和新的风格。 就像最初的第1版一样(现在来看它的内容已经很老了,而且内容较 少),第4版承诺将帮助最新一代的开发人员、数据库管理人员和他们 的老板进入MySQL的新世界;这个世界有时很令人兴奋,但有时也可能 让人抓狂。 谢谢Silvia和Jeremy,感谢你们为培养下一代MySQL极客所做的辛勤工 作,这些人将确保这个世界上数据的安全,也将确保全球顶级网站和 其他数据驱动的系统在其业务峰值时性能的卓越。
Page
12
祝贺你们,在新冠肺炎病毒肆虐和其他各种事情干扰的情况下,依然 完成了这项工作。我们其他人将确保为所有新的数据库管理员提供这 本书。 Jeremy Cole 于内华达州里诺附近 2021年10月
Page
13
前言 由Oracle维护的官方文档为你提供了安装、配置和与MySQL交互所需的 基础知识。本书可以作为官方文档的配套图书,帮助你了解如何更好 地利用MySQL作为某个应用场景的强大数据平台。 第4版扩展了在操作数据库过程中的合规性和安全性方面的内容,这两 方面所扮演的角色日益重要。隐私法和数据主权等新的现实问题改变 了公司构建产品的方式,这自然会给技术架构的发展带来新的复杂 性。 这本书是写给谁的 这本书首先是为那些希望在运行MySQL方面提高专业技能的工程师准备 的。这个版本假设读者熟悉关系数据库管理系统(RDBMS)的基本原 理。我们还假设读者有常规系统管理、网络和操作系统维护方面的经 验。 我们将为你提供经过验证的策略,让你可以使用现代体系结构及更先 进的工具和实践来大规模运行MySQL。 最后,我们希望你能从本书中获得MySQL内部原理和扩展策略的相关知 识,能够帮助你在组织中扩展数据存储层。我们还希望你从书中新发 现的见解,可以帮助你学习和实践一种系统的方法,用来设计、维护 和检测基于MySQL的系统架构。 第4版有什么不同 《高性能MySQL》多年来一直是数据库工程社区的一部分,从第1版到 第3版的3本书分别发布于2004年、2008年和2012年。在以前的版本 中,我们专注于深入剖析内部设计,解释各种调优设置的含义,并提 供有效更改设置的知识,以此来达到我们的目标,告诉开发者和管理 员如何优化MySQL的每一点性能。这个版本保持了相同的目标,但有不 同的侧重点。 自第3版出版以来,MySQL发布了3个新的大版本,其生态系统发生了很 大变化。它在工具范围上大大扩展,突破了Perl和Bash脚本,并发展
Page
14
出成熟的工具解决方案。全新的开源项目已经建立,这改变了企业管 理MySQL的方式。 传统的数据库管理员(DBA)的角色也在不断演变。业内有一个古老的 笑话,DBA的全称是“不要费心去问”(Don't Bother Asking)。DBA 在软件开发生命周期(SDLC)中以“减速带”而闻名,这并不是因为 他们有一种守旧的态度,而仅仅是因为数据库的发展速度不如SDLC的 其他部分快。 有了《数据库可靠性工程:数据库系统设计与运维指南》(莱恩·坎 贝尔、夏丽蒂·梅杰斯著,O'Reilly出版)等书,这已经成为一个新 的现实:技术组织更多地将数据库工程师视为业务增长的促进因素, 而不是所有数据库的唯一操作员。DBA的主要日常工作曾经涉及schema 设计和查询优化,现在他们负责向开发人员传授这些技能,并管理系 统,使开发人员能够快速、安全地部署自己的模式变更。 基于这些变化,我们认为不应该再将本书的重点放在优化MySQL以将性 能提高几个百分点上,而应当是为人们提供他们所需要的信息,以便 就如何最好地使用MySQL做出明智的决定。这首先要理解MySQL是如何 设计的,也就是要理解MySQL擅长做什么,不擅长做什么。[1]MySQL的 现代版本提供了合理的默认值,除非你遇到非常具体的扩展问题,否 则几乎不需要进行任何调整。现代团队需要更多地处理模式更改、合 规性问题和分片。我们希望本书能够全面指导当下的公司如何更好地 大规模运行MySQL。 本书使用的约定 本书使用如下排版约定: 斜体(Italic) 用于表示对应的内容是新词汇、URL、邮箱地址、文件名和文件扩 展名。 等宽字体(Constant width) 用于程序清单(包括段落中的),表示程序元素,如变量名或函 数名、数据库、数据类型、环境变量、语句和关键字。 等宽加粗字体(Constant width bold) 用于显示命令或用户输入的文本。
Page
15
等宽斜体(Constant width italic) 用于显示应该由用户提供或根据上下文确定的值。 这个图标表示提示或建议。 这个图标表示一般注释。 这个图标表示警告或者提醒。 O'Reilly在线学习平台(O'Reilly Online Learning) 近40年来,O'Reilly Media致力于提供技术和商业培训、知识和卓越 见解,来帮助众多公司取得成功。 我们拥有独一无二的专家和革新者组成的庞大网络,他们通过图书、 文章、会议和我们的在线学习平台分享他们的知识和经验。O'Reilly 的在线学习平台允许你按需访问现场培训课程、深入的学习路径、交 互式编程环境,以及O'Reilly和200多家其他出版商提供的大量文本和 视频资源。有关的更多信息,请访问http://oreilly.com。 如何联系我们 请将对本书的评价和存在的问题通过如下地址告知出版者。 美国: O'Reilly Media, Inc. 1005 Gravenstein Highway North
Page
16
Sebastopol, CA 95472 中国: 北京市西城区西直门南大街2号成铭大厦C座807室(100035) 奥莱利技术咨询(北京)有限公司 O'Reilly的每一本书都有专属网站,你可以在那里找到图书的相关信 息,包括勘误列表、示例代码及其他信息。本书的网址是: https://oreil.ly/hiperfmysql_2e 关于本书的评论和技术性的问题,请发送电子邮件到: bookquestions@oreilly.com 关于我们的图书、课程、会议和新闻的更多信息,请参阅我们的网站 http://www.oreilly.com。 在Facebook上找到我们:http://facebook.com/oreilly 在Twitter上关注我们:http://twitter.com/oreillymedia 在YouTube上观看我们:http://www.youtube.com/oreillymedia [1] 有一种众所周知的情况,经常有人把MySQL作为队列来使用,然后还抱怨它为什么不好。最常被吐槽 的原因是轮询新队列操作的开销、处理消息时锁定记录的成本,以及随着时间的推移数据量不断增长,队 列表变得越来越笨重。
Page
17
本书第4版的致谢 来自Silvia 首先,我要感谢我的家人。我的父母放弃了在埃及的稳定工作和生 活,把我和我的兄弟带到了美国。还有我的丈夫Armea,感谢他在我职 业生涯中一直支持我,帮助我迎接一个又一个挑战,并最终取得了这 一成就。 我结束在中东的大学生活,从一名技术移民开始,实现了移居美国的 梦想。在加利福尼亚州的一所州立大学获得学位后,我在纽约找到了 一份工作。我还记得,本书的第2版是我用自己的钱买的大学教科书之 外的第一本科技图书。我要感谢前几版的作者,他们教会我很多基础 知识,让我在职业生涯中做好了管理数据库的准备。 我还要感谢与我共事过的很多同事。他们的鼓励让我写了本书的第4 版,这本书在我职业生涯的早期教会了我很多东西。我要感谢 SendGrid的前首席技术官Tim Jenkins,他雇用了我,从而使我有了这 份可以做一辈子的工作。尽管我在面试时告诉他,他使用MySQL复制的 方式不对,但他对我的信任是一艘驱动我前进的宇宙飞船。 我要感谢所有在技术领域的杰出女性,她们一直是我的支持者和啦啦 队。特别感谢Camille Fournier和Nicole Forsgren博士,她们写的两 本书影响了我过去几年的职业发展,改变了我对日常工作的看法。 感谢我在Twilio的团队。感谢Sean Kilgore使我成为一名出色的而不 是只关心数据库的工程师。感谢John Martin,他是与我共事过的最乐 观的人。感谢Laine Campbell和她的PalominoDB团队(后来被Pythian 收购),他们在最艰难的岁月里给予我支持,教会了我很多东西,也 感谢Baron Schwartz鼓励我写下自己的经历。 最后,感谢优秀的编辑Virginia Wilson,帮助我把源源不断的想法变 成有意义的文字,并在这一过程中给予我很多的支持和恩惠。 来自Jeremy
Page
18
Silvia找我一起写这本书的时候,正值大多数人生活中一个非常紧张 的时期——从2020年开始的新冠肺炎病毒疫情全球大流行。我不确定 是否想给自己的生活增加更多压力。我的妻子Selena告诉我,如果我 不接受,我会后悔的,我知道最好不要和她争论。她一直支持我,鼓 励我成为最好的自己。我将永远爱她,因为她愿意为我做一切事情。 致我的家人、同事和社区里的朋友们:没有你们,我无法取得今天的 成就。你们教会了我如何成为今天的自己。我的事业是我和你们所有 人的经历的汇总。你们教会我如何接受批评,如何以身作则,如何接 受失败和重新振作,最重要的是,你们让我明白团队大于个人。 最后,我想感谢Silvia,感谢你相信我能为这本书带来共识之外的不 同视角。我希望达到了你的期望。 致谢技术审阅者 我们还要在这里感谢所有的技术审阅者,是你们帮助这本书得以最终 完成,谢谢大家付出的时间和努力:Aisha Imran、Andrew Regner、 Baron Schwartz、Daniel Nichter、Hayley Anderson、Ivan Mora Perez、Jam Leoni、Jaryd Remillard、Jennifer Davis、Jeremy Cole、Keith Wells、Kris Hamoud、Nick Vyzas、Shubheksha Jalan、Tom Krouper和Will Gunty。
Page
19
第1章 MySQL架构 MySQL的架构特点使其可以被应用在很多场景中。尽管它并不完美,但 足够灵活,从小型的个人网站到大型的企业应用它都可以工作得很 好。为了最大限度地使用MySQL,你需要了解它的设计,以便能够用其 所长,避其所短。 本章概述了MySQL服务端的架构、各种存储引擎之间的主要区别,以及 这些区别的重要性。我们试图通过简化细节和演示案例来解释MySQL的 原理。这些讨论无论是对数据库一无所知的新手,还是熟知其他数据 库的专家,都十分有用。
Page
20
MySQL的逻辑架构 如果能在脑海中构建出一幅MySQL各组件之间协同工作的架构图,那么 这将有助于你深入理解MySQL服务器。图1-1展示了MySQL架构的逻辑视 图。 最上层的客户端所包含的服务并不是MySQL独有的,大多数基于网络的 客户端/服务器工具或服务器都有类似的服务,包括连接处理、身份验 证、确保安全性等。 第二层是比较有意思的部分。大多数MySQL的核心功能都在这一层,包 括查询解析、分析、优化、以及所有的内置函数(例如,日期、时 间、数学和加密函数),所有跨存储引擎的功能也都在这一层实现: 存储过程、触发器、视图等。 第三层是存储引擎层。存储引擎负责MySQL中数据的存储和提取。和 GNU/Linux下的各种文件系统一样,每种存储引擎都有其优势和劣势。 服务器通过存储引擎API进行通信。这些API屏蔽了不同存储引擎之间 的差异,使得它们对上面的查询层基本上是透明的。存储引擎层还包 含几十个底层函数,用于执行诸如“开始一个事务”或者“根据主键 提取一行记录”等操作。但存储引擎不会去解析SQL[1],不同存储引擎 之间也不会相互通信,而只是简单地响应服务器的请求。
The above is a preview of the first 20 pages. Register to read the complete e-book.
AI Reading Assistant
Whole-book reading guide from stratified index samples; jump to passages in the text
AI guide
# High Performance MySQL (4th Edition) — Reading Guide
## 【One-Line Pitch】
The definitive practical handbook for running MySQL at scale — covering everything from storage engine internals and indexing strategy to hardware tuning, schema migrations, and SRE-style monitoring — essential reading for DBAs, backend engineers, and architects who operate MySQL in production.
## 【Book Arc】
- **Opening (~0%–11%)**: Foundations of MySQL architecture — locking mechanisms, transaction semantics, InnoDB as the default engine, and the shift toward defining service-level objectives (SLI/SLO/SLA) as the starting point for performance work.
- **Early (~11%–28%)**: Monitoring and hardware — using Performance Schema for query and memory inspection, then moving to operating system and hardware optimization including RAID levels, network configuration, and OS-level diagnostics with vmstat/iostat.
- **Middle (~28%–44%)**: InnoDB deep dive and schema management — buffer pool tuning, purge/undo log management, advanced InnoDB settings, data type selection (CHAR vs. VARCHAR, BIT, SET), and the critical practice of running online schema changes in production.
- **Middle (~44%–61%)**: Indexing strategy — index types, prefix indexes and selectivity, the importance of column order in composite indexes, and why ORM users still must understand indexes.
- **Late (~61%–end)**: Query optimization — understanding the full query lifecycle, reading execution plans, avoiding unnecessary scans, optimizing joins, and the eternal trade-off between "fast, accurate, and simple."
## 【Key Takeaways】
- **Locking is a balance between overhead and safety** (Early): MySQL offers multiple storage engines with different lock granularities; InnoDB's row-level locking with MVCC is the default choice for good reason, but lock management itself consumes resources that must be accounted for in high-concurrency designs.
- **SLOs come before performance tuning** (Early): Define SLIs (what to measure), SLOs (acceptable ranges), and SLAs before optimizing anything — this turns performance work from a technical exercise into a business-aligned practice and guides prioritization across teams.
- **Performance Schema is your window into server internals** (Early): Enable specific instruments to inspect SQL statements, memory usage, and locks; the `threads` table is the key to correlating processlist IDs with internal THREAD_IDs when diagnosing blocking issues.
- **Hardware and OS choices set your performance ceiling** (Early): RAID 0 is never acceptable for production (failure probability exceeds single disks), RAID 5 becomes viable with SSDs, and simple network issues like 1% packet loss or slow DNS resolution can devastate MySQL performance — enable `skip_name_resolve` on production servers.
- **InnoDB tuning requires understanding its internals** (Middle): The buffer pool, purge threads, and I/O capacity settings (`innodb_io_capacity`, `innodb_buffer_pool_instances`) directly impact scalability; a growing undo log with a long history list signals purge lag that must be addressed before it fills the disk.
- **Schema changes in production need online tools** (Middle): Even with MySQL 8.0's expanded INPLACE/INSTANT DDL support, large tables may still require external tools like `pt-online-schema-change` or `gh-ost` for throttled, non-blocking migrations — and CI integration should enforce schema-change discipline.
- **Index selectivity drives query performance** (Middle): Prefix indexes save space but reduce selectivity; measure cardinality to find the right prefix length, and remember that composite index column order matters because MySQL only uses the leftmost prefix effectively.
- **Query optimization starts with understanding the lifecycle** (Late): Most slow queries involve unnecessary operations, repeated work, or overly slow steps; use `SHOW FULL PROCESSLIST` states to identify bottlenecks, and remember that `COUNT()` queries are inherently hard to optimize — you must choose between fast, accurate, and simple.
## 【Reading Tips】
- **Skim the opening chapters on locking and transactions** if you already know ACID basics — the key insight is that InnoDB is the default for good reason, and MVCC with gap locks prevents phantom reads at REPEATABLE READ.
- **Deep-read the Performance Schema chapter** (Early) — it's dense but pays off immediately; focus on the `events_statements_history` tables and the `threads` table, which are the most practically useful for daily diagnosis.
- **The hardware chapter (Early) is skimmable for cloud users** but don't skip the network section — DNS resolution and port range issues are common even in managed environments.
- **Pay special attention to the InnoDB tuning section (Middle)** — the discussion of purge lag and `innodb_max_purge_lag` is rare practical wisdom you won't find in official docs; the schema-change tooling comparison is also worth careful reading.
- **The indexing and query optimization chapters (Middle–Late) deserve multiple passes** — the examples build on each other, and the discussion of why ORMs can't save you from understanding indexes is essential for application developers.
## 【Coverage Limits】
This guide synthesizes the first ~61% of the book (through query optimization fundamentals). The excerpts do not cover the later chapters on replication, backup/recovery, disaster recovery, or regulatory compliance — these are referenced but not detailed in the available material.
##
Passage locations
Excerpt 1
源上同时进行更改操作,只 要被修改的数据彼此不冲突即可。 问题是加锁也需要消耗资源。锁的各种操作,包括获取锁、检查锁是 否空闲、释放锁等,都会增加系统的开销。如果系统花费大量的时间 来管理锁,而不是存取数据,那么系统的性能可能会受影响。 锁定策略是锁开销和数据安全性之间的平衡,这种平衡会影响性能。 大多数商业数据...
View in text
Excerpt 2
用performance schema Performance Schema将内存使用统计信息存储在摘要表中,摘要表的 名称以memory_summary_前缀开头。内存使用聚合统计,其参数如表3- 8所示。 表3-8:内存使用的聚合参数 例如,要找到占用大部分内存的InnoDB结构,可以执行以下查询: VARI...
View in text
Excerpt 3
ted通常保持在100到120之间,那么可以将缓 存大小设置为20。如果停留在500到700之间,那么将缓存大小设置为 200也足够大了。可以这样想:当同时有700个连接时,缓存中线程全 部用光,当只有500个连接时,将有200个缓存线程作为备用,即便工 作负载随后再增加到700也够用了。 对于大多数使用场景来说...
View in text
Excerpt 4
tomer_id放到前面,因为对应 条件值的customer_id数量更小。我们再来看看对于这个customer_id 的条件值,对应的staff_id列的选择性如何: 这样做有一个地方需要注意,查询的结果非常依赖于选定的具体值。 如果按上述办法优化,可能对其他一些条件值的查询不公平,服务器 的整体性能可能会变得...
View in text
Support Author
0.00
Total Amount (¥)
0
Donation Count
Please enter an amount
Minimum ¥1
You will be redirected to Alipay to complete payment, then return here.
Order created — please complete Alipay payment
{{#payUrl}} Pay with Alipay {{/payUrl}} {{^payUrl}}{{message}}
{{/payUrl}}
Donation failed:{{message}}
Log in to link the donation to your account (anonymous payment also works)
Recommended for You
{{#thumbnailUrl}}
{{/thumbnailUrl}}
{{^thumbnailUrl}}
{{/thumbnailUrl}}
Loading recommended books...
Failed to load, please try again later