关于我们
书单推荐
新书推荐
|
高性能MySQL(第4版) 读者对象:《高性能MySQL(第4版)》不但适合数据库管理员(DBA)阅读,也适合开发人员参考学习。不管是数据库新手还是专家,相信都能从本书有所收获。
《高性能MySQL(第3版)》是MySQL 领域的极佳之作,拥有广泛的影响力。第4版更新了大量的内容,全书共分为16章和6 个附录,内容涵盖MySQL架构和历史,基准测试和性能剖析,数据库软硬件性能优化,复制、备份和恢复,高可用与高可扩展性,以及云端的MySQL和MySQL相关工具等方面的内容。每一章都是相对独立的主题,读者可以有选择性地单独阅读。《高性能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主要模块的实现和原理有深入的研究,对系统架构、高可用环境规划都有深入理解。张新铭,云掣资深数据库专家,网络常用名俊达,曾任淘宝、支付宝DBA,全程参与淘宝核心业务系统底层存储系统改造,参与建设支付宝MySQL标准化运维体系。对于数据库体系结构和运作原理有深入的理解,擅长大数据量和高访问量OLTP数据库的设计和优化。
序................................................................................. xxiii
前言............................................................................... 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 小结 .......................................................................................................................... 256 第 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
你还可能感兴趣
我要评论
|