译者: 宁海元 / 周振兴 / 张新铭
出版社: 电子工业出版社
出品方: 博文视点
出版年: 2022-10
ISBN: 9787121442575
页数: 344
装帧: 平装
定价: 100
丛书: O'Reilly动物系列(中译本)
内容简介 · · · · · ·
《高性能 MySQL》一直是 MySQL 领域的经典之作,影响了一代又一代的 DBA 和技术人员,从第3 版出版到第 4 版出版过去了近十年,MySQL 也从 5.5 版本更新到了 8.0 版本。第 4 版中增加了大量对 MySQL 5.7 和 8.0 版本新特性的介绍,删除了一些在新版本中已经废弃或者不再常用的功能,还增加了对云数据库的介绍,减少了在官方文档中已有的基础使用和配置相关的内容。这些年,MySQL 经过在大量大规模互联网场景中的应用验证,使得本书在继续关注高性能之外,还用了较多的篇幅来介绍如何实现 MySQL 的大规模可扩展应用和合规性问题,这是相比第 3 版最大的不同,也是本书封面上所写的“经过大规模运维验证的策略”的体现。
《高性能MySQL(第4版)》适合数据库管理员(DBA)阅读,也适合系统运维和开发人员参考学习。不管你是数据库...
《高性能 MySQL》一直是 MySQL 领域的经典之作,影响了一代又一代的 DBA 和技术人员,从第3 版出版到第 4 版出版过去了近十年,MySQL 也从 5.5 版本更新到了 8.0 版本。第 4 版中增加了大量对 MySQL 5.7 和 8.0 版本新特性的介绍,删除了一些在新版本中已经废弃或者不再常用的功能,还增加了对云数据库的介绍,减少了在官方文档中已有的基础使用和配置相关的内容。这些年,MySQL 经过在大量大规模互联网场景中的应用验证,使得本书在继续关注高性能之外,还用了较多的篇幅来介绍如何实现 MySQL 的大规模可扩展应用和合规性问题,这是相比第 3 版最大的不同,也是本书封面上所写的“经过大规模运维验证的策略”的体现。
《高性能MySQL(第4版)》适合数据库管理员(DBA)阅读,也适合系统运维和开发人员参考学习。不管你是数据库新手还是专家,相信都能从本书中有所收获。
作者简介 · · · · · ·
Silvia Botros是Twilio的高级首席工程师。在SendGrid工作期间,她帮助部署和维护了各种MySQL数据存储,这些数据存储支持邮件管道和SendGrid提供的其他产品,并推动MySQL设计从开始到生产。
Jeremy Tinley是Etsy的高级职员工程师,拥有超过20年的MySQL经验。在他的职业生涯中,他管理了成千上万个MySQL实例,着眼于可用性、可靠性和运营效率。
译者简介
宁海元有超过十年的数据库管理经验,从最初的SQLServer 2000到Oracle再到MySQL,擅长数据库高可用架构、性能优化和故障诊断。目前专注于无线数据领域。网络常用名NinGoo,
周振兴毕业于北京师范大学数学系,2009年开始负责MySQL运维管理工作,有丰富的MySQL性能优化、Troubleshooting经验,对MySQL主要模块的实现...
Silvia Botros是Twilio的高级首席工程师。在SendGrid工作期间,她帮助部署和维护了各种MySQL数据存储,这些数据存储支持邮件管道和SendGrid提供的其他产品,并推动MySQL设计从开始到生产。
Jeremy Tinley是Etsy的高级职员工程师,拥有超过20年的MySQL经验。在他的职业生涯中,他管理了成千上万个MySQL实例,着眼于可用性、可靠性和运营效率。
译者简介
宁海元有超过十年的数据库管理经验,从最初的SQLServer 2000到Oracle再到MySQL,擅长数据库高可用架构、性能优化和故障诊断。目前专注于无线数据领域。网络常用名NinGoo,
周振兴毕业于北京师范大学数学系,2009年开始负责MySQL运维管理工作,有丰富的MySQL性能优化、Troubleshooting经验,对MySQL主要模块的实现和原理有深入的研究,对系统架构、高可用环境规划都有深入理解。
张新铭,云掣资深数据库专家,网络常用名俊达,曾任淘宝、支付宝DBA,全程参与淘宝核心业务系统底层存储系统改造,参与建设支付宝MySQL标准化运维体系。对于数据库体系结构和运作原理有深入的理解,擅长大数据量和高访问量OLTP数据库的设计和优化。
目录 · · · · · ·
前言............................................................................... xxv
本书第 4 版的致谢.............................................................. xxix
第 1 章 MySQL 架构............................................................ 1
MySQL 的逻辑架构 ...................................................................................................... 1
连接管理与安全性 ................................................................................................ 2
· · · · · · (更多)
前言............................................................................... xxv
本书第 4 版的致谢.............................................................. xxix
第 1 章 MySQL 架构............................................................ 1
MySQL 的逻辑架构 ...................................................................................................... 1
连接管理与安全性 ................................................................................................ 2
优化与执行............................................................................................................ 2
并发控制 ....................................................................................................................... 3
读写锁 ................................................................................................................... 3
锁的粒度 ............................................................................................................... 4
事务 .............................................................................................................................. 5
隔离级别 ............................................................................................................... 7
死锁 ....................................................................................................................... 8
事务日志 ............................................................................................................... 9
MySQL 中的事务 ................................................................................................ 10
多版本并发控制 .......................................................................................................... 12
复制 ............................................................................................................................ 13
数据文件结构 ............................................................................................................. 14
InnoDB 引擎 ............................................................................................................... 14
JSON 文档支持 ................................................................................................... 15
数据字典的变化 .................................................................................................. 16
原子 DDL ............................................................................................................ 16
小结 ............................................................................................................................ 16
第 2 章 可靠性工程世界中的监控..............................................17
可靠性工程对 DBA 团队的影响 ................................................................................. 18
定义服务水平目标 ...................................................................................................... 18
怎样才能让客户满意 ........................................................................................... 19
用什么来度量 ............................................................................................................. 20
定义 SLI 和 SLO ................................................................................................. 20
监控解决方案 ...................................................................................................... 21
监控可用性.......................................................................................................... 22
监控查询延迟 ...................................................................................................... 24
监控报错 ............................................................................................................. 24
主动监控 ............................................................................................................. 25
度量长期性能 ............................................................................................................. 31
了解业务节奏 ...................................................................................................... 31
有效地跟踪指标 .................................................................................................. 32
使用监控工具检查性能 ....................................................................................... 33
使用 SLO 来指导整体架构 .................................................................................. 34
小结 ............................................................................................................................ 34
第 3 章 Performance Schema........................................... 35
Performance Schema 介绍 ........................................................................................... 35
插桩元件 ............................................................................................................. 36
消费者表的组织 .................................................................................................. 37
资源消耗 ............................................................................................................. 39
局限性 ................................................................................................................. 39
sys Schema .......................................................................................................... 40
理解线程 ............................................................................................................. 40
配置 ............................................................................................................................ 41
启用或禁用 Performance Schema ........................................................................ 42
启用或禁用插桩 .................................................................................................. 42
启用或禁用消费者表 ........................................................................................... 43
优化特定对象的监控 ........................................................................................... 44
优化线程的监控 .................................................................................................. 45
调整 Performance Schema 的内存大小 ................................................................ 46
默认值 ................................................................................................................. 46
使用 Performance Schema ........................................................................................... 46
检查 SQL 语句 .................................................................................................... 46
检查读写性能 ...................................................................................................... 54
检查元数据锁 ...................................................................................................... 56
检查内存使用情况 .............................................................................................. 56
检查变量 ............................................................................................................. 59
检查最常见的错误 .............................................................................................. 62
检查 Performance Schema 自身 ........................................................................... 63
小结 ............................................................................................................................ 65
第 4 章 操作系统和硬件优化.................................................. 66
什么限制了 MySQL 的性能 ........................................................................................ 66
如何为 MySQL 选择 CPU ........................................................................................... 67
平衡内存和磁盘资源 .................................................................................................. 67
缓存、读取和写入 .............................................................................................. 67
你的工作集是什么 .............................................................................................. 68
固态存储 ..................................................................................................................... 68
闪存概述 ............................................................................................................. 69
垃圾收集 ............................................................................................................. 69
RAID 性能优化 ........................................................................................................... 70
RAID 故障、恢复和监控 .................................................................................... 72
RAID 配置和缓存 ............................................................................................... 73
网络配置 ..................................................................................................................... 75
选择文件系统 ............................................................................................................. 77
选择磁盘队列调度器 ........................................................................................... 79
内存和交换.......................................................................................................... 79
操作系统状态 ...................................................................................................... 81
其他有用的工具 .................................................................................................. 84
小结 ............................................................................................................................ 84
第 5 章 优化服务器设置....................................................... 86
MySQL 的配置是如何工作的 ..................................................................................... 87
语法、作用域和动态性 ....................................................................................... 88
持久化系统变量 .................................................................................................. 89
设置变量的副作用 .............................................................................................. 89
规划变量的更改 .................................................................................................. 90
什么不该做 ................................................................................................................. 91
创建 MySQL 配置文件 ............................................................................................... 92
最小化配置.......................................................................................................... 92
检查 MySQL 服务器的状态变量 ......................................................................... 94
配置内存使用 ............................................................................................................. 94
每个连接的内存需求 ........................................................................................... 94
为操作系统保留内存 ........................................................................................... 95
InnoDB 缓冲池 .................................................................................................... 95
线程缓存 ............................................................................................................. 96
配置 MySQL 的 I/O 行为 ............................................................................................ 97
InnoDB 事务日志 ................................................................................................ 98
日志缓冲区.......................................................................................................... 98
InnoDB 表空间 .................................................................................................. 100
其他 I/O 配置选项 ............................................................................................. 103
配置 MySQL 并发 ..................................................................................................... 103
安全设置 ................................................................................................................... 104
高级 InnoDB 设置 ..................................................................................................... 106
小结 .......................................................................................................................... 108
第 6 章 schema 设计与管理................................................109
选择优化的数据类型 ................................................................................................ 109
整数类型 ............................................................................................................111
实数类型 ............................................................................................................111
字符串类型........................................................................................................ 112
日期和时间类型 ................................................................................................ 117
位压缩数据类型 ................................................................................................ 119
JSON 数据类型 ................................................................................................. 121
选择标识符........................................................................................................ 124
特殊数据类型 .................................................................................................... 126
MySQL schema 设计中的陷阱 .................................................................................. 127
太多的列 ........................................................................................................... 127
太多的联接........................................................................................................ 127
全能的枚举........................................................................................................ 127
变相的枚举........................................................................................................ 128
NULL 不是虚拟值............................................................................................. 128
schema 管理 .............................................................................................................. 128
作为数据存储平台一部分的 schema 管理 ......................................................... 129
小结 .......................................................................................................................... 135
第 7 章 创建高性能的索引....................................................136
索引基础 ................................................................................................................... 136
索引的类型........................................................................................................ 137
使用索引的优点 ................................................................................................ 141
高性能的索引策略 .................................................................................................... 142
前缀索引和索引的选择性 ................................................................................. 142
多列索引 ........................................................................................................... 145
选择合适的索引列顺序 ..................................................................................... 147
聚簇索引 ........................................................................................................... 150
覆盖索引 ........................................................................................................... 157
使用索引扫描来做排序 ..................................................................................... 159
冗余和重复索引 ................................................................................................ 161
未使用的索引 .................................................................................................... 164
维护索引和表 ........................................................................................................... 164
找到并修复损坏的表 ......................................................................................... 165
更新索引统计信息 ............................................................................................ 165
减少索引和数据的碎片 ..................................................................................... 167
小结 .......................................................................................................................... 168
第 8 章 查询性能优化.........................................................170
为什么查询速度会慢 ................................................................................................ 170
慢查询基础 :优化数据访问 ..................................................................................... 171
是否向数据库请求了不需要的数据 .................................................................. 171
MySQL 是否在扫描额外的记录 ........................................................................ 173
重构查询的方式 ........................................................................................................ 177
一个复杂查询还是多个简单查询 ...................................................................... 177
切分查询 ........................................................................................................... 178
分解联接查询 .................................................................................................... 178
查询执行的基础 ........................................................................................................ 179
MySQL 的客户端 / 服务器通信协议 ................................................................. 180
查询状态 ........................................................................................................... 182
查询优化处理 .................................................................................................... 183
查询执行引擎 .................................................................................................... 196
将结果返回给客户端 ......................................................................................... 197
MySQL 查询优化器的局限性 ................................................................................... 197
UNION 的限制 .................................................................................................. 197
等值传递 ........................................................................................................... 198
并行执行 ........................................................................................................... 198
在同一个表中查询和更新 ................................................................................. 198
优化特定类型的查询 ................................................................................................ 199
优化 COUNT() 查询 .......................................................................................... 199
优化联接查询 .................................................................................................... 201
使用 WITH ROLLUP 优化 GROUP BY ............................................................ 201
优化 LIMIT 和 OFFSET 子句 ............................................................................ 202
优化 SQL_CALC_FOUND_ROWS ................................................................... 203
优化 UNION 查询 ............................................................................................. 204
小结 .......................................................................................................................... 204
第 9 章 复制....................................................................205
复制概述 ................................................................................................................... 205
复制如何工作 .................................................................................................... 207
复制原理 ................................................................................................................... 208
选择复制格式 .................................................................................................... 208
全局事务标识符 ................................................................................................ 208
崩溃后的复制安全 ............................................................................................ 210
延迟复制 ........................................................................................................... 210
多线程复制........................................................................................................ 211
半同步复制........................................................................................................ 214
复制过滤器........................................................................................................ 214
复制切换 ................................................................................................................... 216
计划内切换........................................................................................................ 216
计划外切换........................................................................................................ 217
切换时的权衡 .................................................................................................... 217
复制拓扑 ................................................................................................................... 217
主动 / 被动模式 ................................................................................................. 218
主动 / 只读池模式 ............................................................................................. 219
不推荐的一些拓扑架构 ..................................................................................... 220
复制管理和维护 ........................................................................................................ 223
复制监控 ........................................................................................................... 223
观测复制延迟 .................................................................................................... 224
确定副本数据的一致性 ..................................................................................... 225
复制问题和解决方案 ................................................................................................ 226
源端二进制日志损坏 ......................................................................................... 226
非唯一的服务器 ID ........................................................................................... 226
未配置服务器 ID ............................................................................................... 227
临时表丢失........................................................................................................ 227
没有复制所有变更 ............................................................................................ 227
复制延迟过大 .................................................................................................... 228
来自源服务器的超大数据包 ............................................................................. 229
磁盘空间耗尽 .................................................................................................... 229
复制的限制........................................................................................................ 229
小结 .......................................................................................................................... 230
第 10 章 备份与恢复..........................................................231
为什么要备份 ........................................................................................................ 232
定义恢复需求 ....................................................................................................... 233
设计 MySQL 备份方案 ......................................................................................... 234
在线备份还是离线备份 ..................................................................................... 235
逻辑备份还是裸文件备份 ................................................................................. 236
备份什么 ........................................................................................................... 238
增量备份和差异备份 ......................................................................................... 239
复制 ................................................................................................................... 240
管理和备份二进制日志.......................................................................................... 241
备份和恢复工具 .................................................................................................... 241
MySQL Enterprise Backup ................................................................................ 241
Percona XtraBackup .......................................................................................... 242
mydumper .......................................................................................................... 242
mysqldump ........................................................................................................ 242
备份数据 ................................................................................................................ 242
逻辑 SQL 备份 .................................................................................................. 242
文件系统快照 .................................................................................................... 244
Percona XtraBackup .......................................................................................... 249
从备份中恢复数据 ................................................................................................. 252
恢复逻辑备份 .................................................................................................... 253
从快照中恢复 .................................................................................................... 254
使用 Percona XtraBackup 进行恢复 .................................................................. 255
原始文件恢复后启动 MySQL ........................................................................... 256
小结 ...................................................................................................................... 257
第 11 章 扩展 MySQL.......................................................258
什么是可扩展性 ..................................................................................................... 258
读限制与写限制工作负载 ....................................................................................... 260
理解工作负载 .................................................................................................... 260
读限制工作负载 ................................................................................................ 261
写限制工作负载 ................................................................................................ 261
功能拆分 ............................................................................................................... 262
使用读池扩展读 ..................................................................................................... 262
管理读池的配置 ................................................................................................ 264
读池健康检查 .................................................................................................... 265
选择负载均衡器算法 ......................................................................................... 266
排队机制 .................................................................................................... 267
使用分片扩展写 ............................................................................................... 268
选择切分方案 .................................................................................................... 269
多个分片键........................................................................................................ 270
跨分片查询........................................................................................................ 271
Vitess ................................................................................................................. 272
ProxySQL .......................................................................................................... 275
小结 ............................................................................................................. 279
第 12 章 云端的 MySQL....................................................280
托管 MySQL ............................................................................................. 280
Amazon Aurora for MySQL ............................................................................... 281
GCP Cloud SQL ................................................................................................. 283
虚拟机上的 MySQL .................................................................................................. 284
云上的机器类型 ................................................................................................ 284
选择正确的机器类型 ......................................................................................... 285
选择正确的磁盘类型 ......................................................................................... 286
额外的建议........................................................................................................ 287
小结 ........................................................................................................... 289
第 13 章 MySQL 的合规性.................................................291
什么是合规性 .......................................................................................... 291
服务组织控制类型 2.......................................................................................... 292
萨班斯 - 奥克斯利法案 ..................................................................................... 292
支付卡行业数据安全标准 ................................................................................. 292
健康保险可携带性和责任法案 .......................................................................... 292
联邦风险和授权管理计划 ................................................................................. 293
通用数据保护条例 ............................................................................................ 293
Schrems II ......................................................................................................... 293
建立合规控制体系 .................................................................................... 294
机密信息管理 .................................................................................................... 294
角色与数据分离 ................................................................................................ 297
跟踪变更 ........................................................................................................... 297
备份和恢复过程 ................................................................................................ 302
小结 ...................................................................................................................... 304
附录 A 升级 MySQL.........................................................305
附录 B Kubernetes 上的 MySQL.......................................310
· · · · · · (收起)
原文摘录 · · · · · · ( 全部 )
-
Sometimes people protest that they just don’t have time to benchmark the server for 8 or 12 hours at 10 different levels of concurrency on two or three server versions. If you don’t have the time to do the benchmarks right, any time you do spend is wasted; it is better to trust other people’s results, instead of doing an incomplete benchmark and getting the wrong answers. (查看原文) —— 引自第43页 -
The Cisco server has lower per-CPU performance than the EC2 servers. Surprised? We were a bit surprised ourselves.。。。Thus, the explanation for our results is probably as follows: the Cisco server’s CPUs are a couple of years old, and are slower than the EC2 servers. But for more complex tasks such as running a database server, the overhead of virtualization places the EC2 servers at a disadvantage. It’s not always easy to distinguish between slow CPUs, slow memory access, and virtualization overhead, but in this instance the differences seem a bit clearer. (查看原文) —— 引自第599页
> 全部原文摘录
丛书信息
· · · · · ·
喜欢读"高性能MySQL(第4版)"的人也喜欢的电子书 · · · · · ·
喜欢读"高性能MySQL(第4版)"的人也喜欢 · · · · · ·
-
- Kubernetes编程 6.8
-
- Python 3标准库 8.1
-
- Rust程序设计 (第2版) 9.1
-
- Qt 6 C++开发指南 8.3
-
- 左耳听风 8.9
-
- 匠艺整洁之道 8.1
-
- 用Go语言自制解释器 9.5
-
- 代码整洁之道 8.7
高性能MySQL(第4版)的书评 · · · · · · ( 全部 35 条 )
理论性强,学术味浓,不适合初学者看
陪我最久的mysql读物
> 更多书评 35篇
论坛 · · · · · ·
| 请教一下两本高性能mysql的区别 | 来自Leksi | 2023-05-23 23:01:14 |
这本书的其他版本 · · · · · · ( 全部11 )
-
电子工业出版社 (2013)9.2分 1879人读过
-
O'Reilly Media (2004)9.3分 141人读过
-
电子工业出版社 (2010年1月)8.7分 404人读过
-
O'Reilly Media (2008)9.3分 101人读过
以下书单推荐 · · · · · · ( 全部 )
谁读这本书? · · · · · ·
二手市场
· · · · · ·
订阅关于高性能MySQL(第4版)的评论:
feed: rss 2.0


2 有用 steinsmen 2024-10-09 21:22:26 天津
吐槽一下,注释里的链接还得加企微,关键还加不上,有点坑 •ᴗ•💧 (已弃) 捉虫:P15 JSON数组上定义多值索引的新功能是在8.0.17版本中新增的,MySQL压根就没有8.0.7版本(官网更新公告:https://dev.mysql.com/doc/relnotes/mysql/8.0/en/) P68 RAID的意思居然是“廉价磁盘冗余阵列” emm...
1 有用 Carius 2023-03-29 22:41:18 浙江
Java开发,5-11章相关性比较强。个人觉得最精彩要数第七章的索引设计和第五章的配置优化。作为一本参考书能给出这么有料的经验,的确是太值了。作者很克制,给出的都是经验和理解,要深入的话还是要自己查官方手册或者其他资料。真的太棒了,去年买的第三版才看了开头,最近发现出新版了,就火急火燎的看完了。
0 有用 DouDou 2026-07-29 13:23:42 江苏
我不是搞运维的, 直接跳过第四章, 第五章。 SRE那章根本不用看,为了引出后面的内容写太多了,又写得一般般,纯浪费时间,高性能mysql就聚焦高性能就好了,非要讲大道理。
0 有用 阿昕 2023-03-23 21:09:04 浙江
非常不错,与时俱进,主题贴合
1 有用 RongieZeng 2023-03-12 17:34:16 广东
可能是已经看过其他揭秘内部原理的书,感觉内容比较粗浅,干货不太多