搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
文献来源:
出版时间 :
千金良方:MySQL性能优化金字塔法则
0.00    
图书来源: 浙江图书馆(由图书馆配书)
  • 配送范围:
    全国(除港澳台地区)
  • ISBN:
    9787121375200
  • 作      者:
    李春,罗小波,董红禹著
  • 出 版 社 :
    电子工业出版社
  • 出版日期:
    2019
收藏
编辑推荐

沃趣团队凭借着多年的运维经验,为行业客户提供专业数据库、系统相关的服务和产品。《千金良方——MySQL性能优化金字塔法则》是其核心团队的呕心力作,全书细致地介绍MySQL的基本原理,以及性能优化的实际案例。

无论你是MySQL初学者,还是专门从事MySQL工作的开发人员和运维人员,或者是资深的MySQL DBA,都值得一读!


展开
作者简介

李春,原阿里巴巴MySQL DBA团队技术Leader,全程参与阿里数据库架构从Oracle迁移到MySQL的过程,参与分布式中间件Cobar设计。现为沃趣科技联合创始人&首席架构师,负责MySQL、基础软件及部分关键组件的技术选型、风险评估等。


罗小波,沃趣科技高级数据库工程师,主要负责MySQL产品的数据库支撑与售后二线支撑。曾参与版本发布系统、轻量级监控系统、运维管理平台、数据库管理平台的设计与编写,熟悉MySQL体系结构,Innodb存储引擎,喜好专研开源技术,多次在公开场合做过线下线上数据库专题分享,发表过多篇与数据库相关的研究文章。


董红禹,沃趣科技MySQL DBA , 为过多家大型企业进行过故障解决、架构设计、性能优化,例如中信证券、浙江农信、陕西农信、邮储银行等。规划并实施了浙江农信互联网核心金融平台。


展开
内容介绍

《千金良方——MySQL性能优化金字塔法则》一共分为3篇:基础篇、案例篇和工具篇。“基础篇”从理论基础和基本原理层面介绍了MySQL的安装与配置、升级和体系结构,information_schema、sys_schema、performance_schema和mysql_schema,MySQL复制,MySQL事务,SQL语句优化及架构设计基础知识。“案例篇”从硬件和系统、MySQL架构等方面给出了性能优化的十几个案例,包括:性能测试的基本优化思路和需要关注的性能指标解释、对日常SQL语句执行慢的基本定位、避免x86可用性的一般性方法、节能模式会怎样影响性能、I/O存储作为数据库重要的依赖是如何影响数据库性能的、主备复制不一致可能有哪些原因、字符集不一致会造成哪些性能问题、在实际场景中锁的争用是怎样的。“工具篇”介绍了在MySQL性能优化过程中需要用到的各种工具,包括:dmidecode、top、dstat等硬件和系统排查工具;FIO、sysbench、HammerDB等压力测试工具;mysqldump、XtraBackup等备份工具;Percona、innotop、Prometheus等监控工具。

展开
精彩书评

推荐序1

本书作者李春是阿里巴巴较为早期的DBA之一,罗小波和董红禹则都是知数堂的优秀校友。有一次我偶然知道了罗小波的经历,非常令人赞叹,这么努力的人理应获得如此成就。

注意到罗小波是因为他的投稿文章“MySQL排序内部原理探秘”,该文章真的是从头到尾、从上到下全方位解读了MySQL内部排序的方方面面。再后来,又关注到罗小波推出PFS和sys schema系列连载文章,更是对其静心深入学习的能力表示钦佩,整个系列文章翔实、细致、到位。另外,董红禹的功底也非常深厚,他对除MySQL外的其他数据库也有较多了解。二位同学曾多次被知数堂邀请做公开课分享。

除此之外,我曾感叹沃趣培养出了不少好工程师,其人才体系肯定有很多可学之处,于是也邀请了李春来知数堂做公开课分享,就是希望能把他们的人才培养机制分享给业界。

拿到本书书稿,我快速浏览了“案例篇”的全部内容,发现几乎都是精华,里面涉及了相当多的经典案例解析,如果能从这些案例中吸收解决问题的思路,那么相信读者以后若遇到其他问题,基本上都可以解决。

本书既有涉及体系结构、PFS、I_S、统计信息、复制、锁、InnoDB等基础知识的铺垫(其实并不基础),又有众多案例详解,内容丰富、翔实,是难得一见的MySQL性能优化参考书,建议每位DBA以及从事MySQL相关应用开发的读者都读一读。

说一个段子。我曾经开玩笑地说,大家以后要买书的话,记得先看有没有我给写的推荐序,如果有的话,那就放心买,如果没有的话,那就要谨慎点了。本书我是推荐的,所以大家可以放心大胆买。嘿嘿。

叶金荣

 

推荐序2

小学课本告诉我们,蒸汽机是瓦特看到水壶被水蒸气顶起来以后冥思苦想发明出来的。但实际情况其实是,17世纪末期,托马斯•纽克曼(Thomas Newcomen)发明了体积庞大的“蒸汽机”,利用蒸汽的力量把煤矿里的水抽出来,避免了矿井透水、积水的问题。1765年,詹姆士•瓦特(James Watt)发明了分离式冷凝器,改进了纽克曼蒸汽机,使得蒸汽机的效率提升了4倍。当然,纽克曼蒸汽机也不是凭空出现的,纽克曼蒸汽机是基于Thomas Savery发明的Savery蒸汽泵的,继续往前追溯,可以追溯到公元1世纪古希腊力学家希罗(Heron of Alexandria)发明的汽转球。

我并不否认瓦特的贡献,正是有了他对蒸汽机做功效率的改变,才提升了煤炭、钢铁的产量,促进了轮船、火车的产生,才有了工业革命。我这里想说的是人们很早就发现了蒸汽做功的理论,但是把它利用起来,把它真正用于我们的生产生活中来提高生产效率的过程是曲折而漫长的,理论和原理的发明是耀眼的明星,工程化实践和持续不断的改进却像星光传到我们的眼睛一样,需要经过漫长的过程,凝聚着很多“无名”科学家和工程师的努力与心血。

MySQL之父Monty(Michael Widenius)在1981年写了MySQL的一行代码以后,在开源的帮助下MySQL成长为目前流行的开源数据库,同样其也凝聚了非常多的开发者、DBA、工程师的心血。2009年,在MySQL被Oracle收购以后,47岁的Monty开发了MariaDB分支,到现在MariaDB也已经10年了,他仍然亲自参与写代码,并且负责大部分代码的Review工作,我作为MariaDB基金会的中国成员在跟Monty一起Review代码时,经常会叹服老爷子对全局的把控能力和对细节的严谨态度。2016年当Monty在阿里巴巴交流分享时,我问Monty:“你怎么看阿里巴巴在MySQL方面的能力以及贡献?”他说:“你贡献的多源复制和闪回功能,对MariaDB很有用,因此我觉得你和你的团队是很有能力的,也希望能获得更多的来自各大厂商和社区的贡献。”

MySQL之所以能成为现在流行的开源数据库,它跟它的开放性、包容性是分不开的。它的入门门槛低到用一条命令就能把MySQL安装起来,你能在程序开发的入门资料中很容易就找到MySQL的配套使用教程,你可以不用付任何费用就能在自己的环境中部署起来对外承载业务。我之前提交的代码补足了MySQL在某些方面的功能,是对它的贡献;苏普验证测试时发现MySQL 5.6的半同步Bug汇报给社区,是对它的贡献;李春他们撰写MySQL书籍,也是对它的贡献。我和阿里巴巴的其他同事翻译《高性能MySQL》时就体会到了出版一本书的艰辛,所以看到《千金良方:MySQL性能优化金字塔法则》这本沉甸甸的书时,完全能感受到三位作者在写书时的痛苦与艰辛。

MySQL从5.5版本开始引入performance_schema,从5.6版本开始把默认值设置为on,我个人认为从5.7版本(对应MariaDB 10.1)开始它才真正成熟起来。从某种程度上说,performance_schema的引入对MySQL来说可以类比于瓦特发明分离式冷凝器改进蒸汽机,使得开发人员或者DBA对MySQL的性能损耗能准确定位到源码层级,对MySQL的管控也可以更加精细化。这本书是我了解到的一本体系化介绍performance_schema的书,对MySQL性能优化有兴趣的读者可以参阅。

另外,本书“案例篇”也是我见过的相对比较系统化介绍性能优化方面的内容,从服务器、操作系统、MySQL、SQL和锁方面整体梳理了MySQL性能优化的方方面面,相关案例都具有代表性,很值得参考和验证,也希望读者能参考案例来验证和测试,并举一反三,结合自己环境的实际场景构建起性能改进的方法论。

蒸汽机的改进不是一蹴而就的,性能的改进也是贯穿整个MySQL发展史的,就像瓦特改进蒸汽机引发了工业革命一样,我希望本书的出版能进一步促进大家对MySQL/MariaDB性能优化的关注,能为流行的开源数据库MySQL/MariaDB大厦添砖加瓦。

彭立勋

 

 

推荐序3

我先说一个笑话。这个笑话是我从万维钢的专栏里看到的。

三个逻辑学家走进酒吧,酒保问他们,三位都喝啤酒吗?

一个逻辑学家说,我不知道。

第二个逻辑学家说,我不知道。

第三个逻辑学家说,是的。

这个笑话有点冷,需要用一点逻辑才能欣赏。要想否定“三人都喝啤酒”,只要有一个人知道自己不喝就行了。前两个逻辑学家说不知道,就说明他们自己是想喝的,只是不知道别人喝不喝。而第三个人一看前两个人都说不知道,那就说明这两个人肯定都是要喝的,而他自己也想喝啤酒,所以他就可以判断三人都想喝啤酒。

他们的回答有点怪,但是非常准确。

为什么要讲这个故事呢?因为我的这三位同事李春、罗小波、董红禹在我头脑里的画像都是非常认真和讲究逻辑的人。这种认真和严谨,你在书中的每一页都能感受到。相信通过这本书的系统性训练,你也能感受到这种思维方式的美,也能获得这种思维方式。“授人以鱼,不如授之以渔。”具备优秀的思维能力才是在未来可以迁移的能力,如果只是学习一些命令,则很快会过时,思维能力和学习能力的提升才是不会变的东西。

说回到这本书。

对这本书的起心动念,我是有功劳的,所以李春邀请我来写序,也就很痛快地答应了。

一年前我们在想,我们有着业界很棒的MySQL团队,为什么不能将这些知识和经验以一种更容易传播的方式贡献给大家呢?

沿着这个思路,想到了两种载体,一种是产品,这也是沃趣一直在做的,未来也会一直持续做;一种是书籍,书籍其实也是一种产品,因为它也是标准化的、极容易复制的。因此,团队中在MySQL技术上颇有追求和建树的几个人碰头一聊,大家一拍即合。

起心动念容易,甚至一度让我们很兴奋,但是落地难,尤其是在做了管理者带了团队之后,更能意识到这一点,提建议(起心动念)是没有成本的,但是具体做这件事、落地这件事的人是需要忍受寂寞、付出巨大努力的。

我在他们的写作群里,见证了写书过程中的所有艰辛。好在一年的时间,坚持下来了,成果就是各位手里拿到的这本书。

学知识,如果说有捷径,那就是选择几本靠谱的、高质量的书籍,站在巨人的肩膀上,这是高起点和借势。

这本书可以让你体验到原有知识从破碎到重建的过程,只有能打破你现有认知的书籍才是好书籍,打破之后,如果你能够重建起基于新认知的知识大厦,你就重生了。对于认知是如此,对于心智、对于各种成长莫不如此。格物致知,相信通过努力学习这本书,会带给你底层认知的提升。

在这里也要恭喜我的几位同事:李春、罗小波、董红禹,写书是大多数技术人员的梦想,人类从一开始就追求不朽,立言是一种极好的方式,儒家讲立德、立功、立言,写书就是立言的好方式。此外,道家通过修炼达到肉身不死来实现不朽,佛教通过觉悟实现不朽,这两种方式不是我辈可以企及的。说了这么多,其实是想呼吁更多的人加入写书的队伍,授人玫瑰,手留余香。

分享我很喜欢的一句话,“你的样子里,有你爱过的人,走过的路,看过的风景,读过的书”。相信通过对这本书的学习,一定可以让你的气质变得不一样!

魏兴华

展开
目录

基  础  篇

第1章  MYSQL初始化安装、简单安全加固  3

1.1  背景  3

1.2  初始化安装  3

1.2.1  下载二进制安装文件  3

1.2.2  创建MYSQL用户  3

1.2.3  创建程序、数据存放目录  4

1.2.4  解压缩二进制安装文件并设置目录权限  4

1.2.5  软链接程序路径,并设置MYSQL命令环境变量  5

1.2.6  配置MY.CNF文件参数  5

1.2.7  初始化MYSQL  6

1.2.8  启动MYSQL  7

1.3  简单安全加固  8

1.3.1  登录MYSQL  8

1.3.2  删除非ROOT或非LOCALHOST的用户并修改ROOT密码  9

1.3.3  删除TEST库,清理MYSQL.DB表  10

1.4  创建用户、库、表、数据  12

1.4.1  创建管理用户并授权  12

1.4.2 创建库、表、程序账号  13

1.4.3  插入数据  14

1.5  MYSQL参数模板  16

第2章  MYSQL常用的两种升级方法  21

2.1  背景  21

2.2  MYSQL 5.5.54的安装  21

2.3  升级MYSQL 5.5.54到MYSQL 5.6.35  21

2.3.1  使用MYSQL_UPGRADE直接升级数据字典库  21

2.3.2  使用MYSQLDUMP逻辑备份数据  30

2.4  升级注意事项  38

第3章  MYSQL体系结构  41

3.1  快速安装MYSQL  41

3.2  数据目录结构  43

3.3  MYSQL SERVER体系结构  46

3.4  MYSQL中的存储引擎  48

3.5  INNODB存储引擎体系结构  48

3.6  INNODB存储引擎后台线程  52

3.7  MYSQL前台线程  54

第4章  PERFORMANCE_SCHEMA初相识  56

4.1  什么是PERFORMANCE_SCHEMA  56

4.2  PERFORMANCE_SCHEMA使用快速入门  57

4.2.1  检查当前数据库版本是否支持  57

4.2.2  启用PERFORMANCE_SCHEMA  58

4.2.3  PERFORMANCE_SCHEMA表的分类  59

4.2.4  PERFORMANCE_SCHEMA简单配置与使用  62

第5章  PERFORMANCE_SCHEMA配置详解  66

5.1  编译时配置  66

5.2  启动时配置  67

5.2.1  启动选项  67

5.2.2  SYSTEM VARIABLES  69

5.3  运行时配置  71

5.3.1  PERFORMANCE_TIMERS表  71

5.3.2  SETUP_TIMERS表  72

5.3.3  SETUP_CONSUMERS表  73

5.3.4  SETUP_INSTRUMENTS表  76

5.3.5  SETUP_ACTORS表  82

5.3.6  SETUP_OBJECTS表  85

5.3.7  THREADS表  87

第6章  PERFORMANCE_SCHEMA应用示例荟萃  93

6.1  利用等待事件排查MYSQL性能问题  93

6.2  锁问题排查  97

6.2.1  找出谁持有全局读锁  97

6.2.2  找出谁持有MDL锁  100

6.2.3  找出谁持有表级锁  104

6.2.4  找出谁持有行级锁  107

6.3  查看最近的SQL语句执行信息  112

6.3.1  查看最近的TOP SQL语句  112

6.3.2  查看最近执行失败的SQL语句  114

6.4  查看SQL语句执行阶段和进度信息  117

6.4.1  查看SQL语句执行阶段信息  117

6.4.2  查看SQL语句执行进度信息  120

6.5  查看最近的事务执行信息  121

6.6  查看多线程复制报错详情  123

第7章  SYS系统库初相识  126

7.1  SYS系统库使用基础环境  126

7.2  SYS系统库初体验  127

7.3  SYS系统库的进度报告功能  129

第8章  SYS系统库配置表  132

8.1  SYS_CONFIG表  132

8.2  SYS_CONFIG_INSERT_SET_USER触发器  136

8.3  SYS_CONFIG_UPDATE_SET_USER触发器  136

第9章  SYS系统库应用示例荟萃  138

9.1  查看慢SQL语句慢在哪里  138

9.2  查看是否有事务锁等待  140

9.3  查看是否有MDL锁等待  141

9.4  查看INNODB缓冲池中的热点数据有哪些  143

9.5  查看冗余索引  144

9.6 查看未使用的索引  145

9.7  查询表的增、删、改、查数据量和I/O耗时统计信息  145

9.8  查看MYSQL磁盘文件产生的磁盘流量与读写比例  146

9.9  查看哪些语句使用了全表扫描  147

9.10  查看哪些语句使用了文件排序  148

9.11  查看哪些语句使用了临时表  149

第10章  INFORMATION_SCHEMA初相识  151

第11章  INFORMATION_SCHEMA应用示例荟萃  161

第12章  MYSQL系统库之权限系统表  177

第13章  MYSQL系统库之访问权限控制系统  184

第14章  MYSQL系统库之统计信息表  200

第15章  MYSQL系统库之复制信息表  206

第16章  MYSQL系统库之日志记录表  218

第17章  MYSQL系统库应用示例荟萃  228

第18章  复制技术的演进  245

第19章  事务概念基础  263

第20章  INNODB锁  280

第21章  SQL优化  299

第22章  MYSQL读写扩展  308

案  例  篇

第23章  性能测试指标和相关术语  317

第24章  历史问题诊断和现场故障分析  322

第25章  性能调优金字塔  326

第26章  SQL语句执行慢真假难辨  330

第27章  如何避免三天两头换硬盘、内存、主板  338

第28章  每隔45天的MYSQL性能低谷  342

第29章  MYSQL连接无法自动释放  359

第30章  查询MYSQL偶尔比较慢  363

第31章  MYSQL最多只允许214个连接  367

第32章  MYSQL挂起诊断思路  375

第33章  硬件和系统调优  378

第34章  并发删除数据造成死锁  387

第35章  删除不存在的数据造成死锁  391

第36章  插入意向锁死锁  394

第37章  分页查询优化  398

第38章  子查询优化——子查询转换为连接  400

第39章  子查询优化——使用DELETE删除数据  403

工  具  篇 

第40章  硬件规格常用查看命令详解  407

第41章  系统负载常用查看命令详解  433

第42章  FIO存储性能压测  469

第43章  HAMMERDB在线事务处理测试  477

第44章  SYSBENCH数据库压测工具  493

第45章  MYSQLADMIN和INNOTOP工具详解  506

第46章  利用PROMETHEUS+GRAFANA 搭建炫酷的MYSQL监控平台  524

第47章  PERCONA TOOLKIT常用工具详解  538

第48章  MYSQL主流备份工具之MYSQLDUMP详解  598

第49章  MYSQL主流备份工具之XTRABACKUP详解  624

第50章  MYSQL主流备份工具之MYDUMPER详解  662

第51章  MYSQL主流闪回工具详解  675

展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

请选择您读者所在的图书馆

选择图书馆
浙江图书馆
点击获取验证码
登录
没有读者证?在线办证