⾼性能mysqlPDF原⽂分享下载
《⾼性能MySQL(第3版)》是MySQL 领域的经典之作,拥有⼴泛的影响⼒。第3 版更新了⼤量的内容,不但涵盖了MySQL5.5版本的新特性,也讲述了关于固态盘、⾼可扩展性设计和云计算环境下的数据库相关的新内容,原有的基准测试和性能优化部分也做了⼤量的扩展和补充。全书共分为16章和6 个附录,内容涵盖MySQL架构和历史,基准测试和性能剖析,数据库软硬件性能优化,复制、备份和恢复,⾼可⽤与⾼可扩展性,以及云端的MySQL和MySQL相关⼯具等⽅⾯的内容。每⼀章都是相对独⽴的主题,读者可以有选择性地单独阅读。   《⾼性能MySQL(第3版)》不但适合数据库管理员(DBA)阅读,也适合开发⼈员参考学习。不管是数据库新⼿还是专家,相信都能从本书有所收获。
每⼀章均别具匠⼼,⼒求理论与实践的精确平衡,且布满⽆价之宝,有时甚⾄越过MySQL舞台,完全适⽤于任⼀数据库。其中第⼆章“MySQL基准测试”及第3章“服务器性能剖析”是⾮常必要的基础,推荐提前阅读。
纵观全书,作者推荐的⼯具、实战案例及经验过的诊断技术,可⼤⼤提⾼你的性能急救技能,以及加深对MySQL本质的理解。然⽽,本书值得推崇的,还是其在探讨性能的同时,将数据库结构的客观⽅⾯纳⼊思考,这是其他书⾥难以看到的。此外,增补的MySQL⾼可⽤性及云特性,也让⼈更加欣喜。
相信不少⼈会因为不到某些书中引⽤的资料或⼯具⽽苦恼,但从本书中按图索骥,会发现这些东西正
是作者对MySQL社区的杰出贡献,也就是说,你可以直接⽤这些⼯具!
很多年前我就是这本书的“粉丝”了,这是⼀本伟⼤的书,第三版尤其如此。这些世界*的专家不仅仅分享他们的专业知识,也花了很多时间来更新和添加新的章节,且都是⾼品质的内容。本书有⼤量关于如何获得MySQL⾼性能的细节信息,并且关注的是提升性能的过程,⽽不仅仅是描述事实结果和琐碎的细枝末节。这本书将告诉读者如何将事情做得更好,不管MySQL在不同版本中的⾏为有多么⼤的改变。
毫⽆疑问,本书的作者是有资格来写这么⼀本书的⼈,他们经验丰富,有合理的⽅法,关注效率,并且精益求精。说到经验丰富,本书的作者已经在MySQL性能领域⼯作多年,从MySQL还没有什么可扩展性和可测量性的时代,直到现在这些⽅⾯已经有了长⾜的进步。⽽说到合理的⽅法,他们简直把这件事情当成了科学,⾸先定义需要解决的问题,然后通过合理的猜测和精确的测量来解决问题。
我对作者在效率⽅⾯的关注尤其印象深刻。作为顾问,他们时间宝贵。客户是按照他们的时间付费的,所以都希望能更快地解决问题。所以本书作者定义了⼀整套的流程,开发了很多的⼯具,让事情变得正确和⾼效。在本书中,作者详细描述了这些流程,并且发布了⼯具的源代码。
最后,本书作者在⼯作上⼀直精益求精。⽐如从吞吐量到响应时间的关注,致⼒于了解MySQL在新硬件上的性能表现,追求新的技能如排队理论对性能的影响,等等。我相信本书预⽰了MySQL的光明前
景。MySQL已经⽀持⾼要求的⼯作负载,本书作者也在努⼒提升MySQL社区内对性能的认识。同时,他们还直接为性能提升做出了贡献,包括XtraDB和XtraBackup。⼀直以来我从他们⾝上学到了不少东西,也希望读者多花点时间读读本书,⼀定会同样有所收益。
——MarkCallaghan,Facebook软件⼯程师
第1章 MySQL 架构与历史
1.1 MySQL 逻辑架构
1.1.1 连接管理与安全性
1.1.2 优化与执⾏
1.2 并发控制
1.2.1 读写锁
1.2.2 锁粒度
1.3 事务
1.3.1 隔离级别
1.3.2 死锁
1.3.3 事务⽇志
1.3.4 MySQL 中的事务
1.4 多版本并发控制
1.5 MySQL 的存储引擎
1.5.1 InnoDB 存储引擎
1.5.2 MyISAM 存储引擎
1.5.3 MySQL 内建的其他存储引擎
1.5.4 第三⽅存储引擎
1.5.5 选择合适的引擎
1.5.6 转换表的引擎
1.6 MySQL 时间线(Timeline)
1.7 MySQL 的开发模式
1.7 MySQL 的开发模式
1.8 总结
第2章 MySQL 基准测试
2.1 为什么需要基准测试
2.2 基准测试的策略
2.2.1 测试何种指标
2.3 基准测试⽅法
2.3.1 设计和规划基准测试
2.3.2 基准测试应该运⾏多长时间
2.3.3 获取系统性能和状态
2.3.4 获得准确的测试结果
2.3.5 运⾏基准测试并分析结果
2.3.6 绘图的重要性
2.4 基准测试⼯具
2.4.1 集成式测试⼯具
2.4.2 单组件式测试⼯具
2.5 基准测试案例
2.5.1 http_load
2.5.2 MySQL 基准测试套件 .
2.5.3 sysbench
2.5.4 数据库测试套件中的dbt2 TPC-C 测试2.5.5 Percona 的TPCC-MySQL 测试⼯具2.6 总结
第3章服务器性能剖析
3.1 性能优化简介
3.1.1 通过性能剖析进⾏优化
3.1.2 理解性能剖析
3.2 对应⽤程序进⾏性能剖析
3.2.1 测量PHP 应⽤程序
3.3 剖析MySQL 查询
3.3.1 剖析服务器负载
3.3.2 剖析单条查询
3.3.3 使⽤性能剖析
3.4 诊断间歇性问题
3.4.1 单条查询问题还是服务器问题
3.4.2 捕获诊断数据
3.4.3 ⼀个诊断案例
3.5 其他剖析⼯具
3.5.1 使⽤USER_STATISTICS 表
3.5.2 使⽤strace
3.6 总结
第4章 Schema 与数据类型优化
4.1 选择优化的数据类型
4.1.1 整数类型
4.1.2 实数类型
4.1.3 字符串类型
4.1.4 ⽇期和时间类型
4.1.5 位数据类型
4.1.6 选择标识符(identifier)
4.1.7 特殊类型数据
4.2 MySQL schema 设计中的陷阱
4.3 范式和反范式
4.3.1 范式的优点和缺点
4.3.2 反范式的优点和缺点 .
4.3.3 混⽤范式化和反范式化
4.4 缓存表和汇总表
4.4.1 物化视图
4.4.2 计数器表
4.5 加快ALTER TABLE 操作的速度
4.5.1 只修改.frm ⽂件
4.5.2 快速创建MyISAM 索引
4.6 总结
第5章创建⾼性能的索引
5.1 索引基础
5.1.1 索引的类型
5.2 索引的优点
5.3 ⾼性能的索引策略
5.3.1 独⽴的列
5.3.2 前缀索引和索引选择性
5.3.3 多列索引
5.3.4 选择合适的索引列顺序
5.3.5 聚簇索引
5.3.6 覆盖索引
5.3.7 使⽤索引扫描来做排序
5.3.8 压缩(前缀压缩)索引
5.3.9 冗余和重复索引
5.3.10 未使⽤的索引
5.3.11 索引和锁
5.4 索引案例学习
5.4.1 ⽀持多种过滤条件
5.4.2 避免多个范围条件
5.4.3 优化排序
5.5 维护索引和表
5.5.1 到并修复损坏的表 .
5.5.2 更新索引统计信息
5.5.3 减少索引和数据的碎⽚
5.6 总结
第6章查询性能优化
6.1 为什么查询速度会慢
6.2 慢查询基础:优化数据访问
6.2.1 是否向服务器请求了不需要的数据6.2.2 MySQL 是否在扫描额外的记录6.3 重构查询的⽅式
6.3.1 ⼀个复杂查询还是多个简单查询6.3.2 切分查询
6.3.3 分解关联查询
6.4 查询执⾏的基础
6.4.1 MySQL 客户端/ 服务器通信协议6.4.2 查询缓存
6.4.3 查询优化处理
6.4.4 查询执⾏引擎
6.4.5 返回结果给客户端
6.5 MySQL 查询优化器的局限性
6.5.1 关联⼦查询
6.5.2 UNION 的限制
6.5.3 索引合并优化
6.5.4 等值传递
6.5.5 并⾏执⾏
6.5.6 哈希关联
6.5.7 松散索引扫描
6.5.8 最⼤值和最⼩值优化 .
6.5.9 在同⼀个表上查询和更新
6.6 查询优化器的提⽰(hint)
6.7 优化特定类型的查询
6.7.1 优化COUNT()查询
6.7.2 优化关联查询
6.7.3 优化⼦查询
6.7.4 优化GROUP BY 和DISTINCT 6.7.5 优化LIMIT 分页
6.7.6 优化SQL_CALC_FOUND_ROWS 6.7.7 优化UNION 查询
6.7.8 静态查询分析
6.7.9 使⽤⽤户⾃定义变量 .
6.8 案例学习
6.8.1 使⽤MySQL 构建⼀个队列表
6.8.2 计算两点之间的距离 .
6.8.3 使⽤⽤户⾃定义函数 .
6.9 总结
第7章 MySQL ⾼级特性
7.1 分区表
7.1.1 分区表的原理
7.1.2 分区表的类型
7.1.3 如何使⽤分区表
7.1.4 什么情况下会出问题 .
7.1.5 查询优化
7.1.6 合并表
7.2 视图
7.2.1 可更新视图
7.2.2 视图对性能的影响
7.2.3 视图的限制
7.2.3 视图的限制
7.3 外键约束
7.4 在MySQL 内部存储代码
7.4.1 存储过程和函数
7.4.2 触发器
7.4.3 事件
7.4.4 在存储程序中保留注释
7.5 游标
7.6 绑定变量
7.6.1 绑定变量的优化
7.6.2 SQL 接⼝的绑定变量
7.6.3 绑定变量的限制
7.7 ⽤户⾃定义函数
7.8 插件
7.9 字符集和校对
7.9.1 MySQL 如何使⽤字符集
7.9.2 选择字符集和校对规则
7.9.3 字符集和校对规则如何影响查询
7.10 全⽂索引
7.10.1 ⾃然语⾔的全⽂索引
7.10.2 布尔全⽂索引
7.10.3 MySQL5.1 中全⽂索引的变化
7.10.4 全⽂索引的限制和替代⽅案
7.10.5 全⽂索引的配置和优化
7.11 分布式(XA)事务
7.11.1 内部XA 事务
7.11.2 外部XA 事务
7.12 查询缓存
7.12.1 MySQL 如何判断缓存命中
7.12.2 查询缓存如何使⽤内存
7.12.3 什么情况下查询缓存能发挥作⽤
7.12.4 如何配置和维护查询缓存
7.12.5 InnoDB 和查询缓存 .
7.12.6 通⽤查询缓存优化
7.12.7 查询缓存的替代⽅案
7.13 总结
第8章优化服务器设置
8.1 MySQL 配置的⼯作原理
8.1.1 语法、作⽤域和动态性
8.1.2 设置变量的副作⽤
8.1.3 ⼊门
8.1.4 通过基准测试迭代优化
8.2 什么不该做
8.3 创建MySQL 配置⽂件
8.3.1 检查MySQL 服务器状态变量
8.4 配置内存使⽤
8.4.1 MySQL 可以使⽤多少内存?
8.4.2 每个连接需要的内存 .
8.4.3 为操作系统保留内存 .
8.4.4 为缓存分配内存
8.4.5 InnoDB 缓冲池(Buffer Pool)
8.4.6 MyISAM 键缓存(Key Caches)
8.4.7 线程缓存
8.4.8 表缓存(Table Cache)
8.4.9 InnoDB 数据字典(Data Dictionary)8.5 配置MySQL 的I/O ⾏为
8.5.1 InnoDB I/O 配置
8.5.2 MyISAM 的I/O 配置 .
8.6 配置MySQL 并发 .
8.6.1 InnoDB 并发配置
8.6.2 MyISAM 并发配置
8.7 基于⼯作负载的配置
8.7.1 优化BLOB 和TEXT 的场景
8.7.2 优化排序(Filesorts).
8.8 完成基本配置
8.9 安全和稳定的设置
8.10 ⾼级InnoDB 设置
8.11 总结
第9章操作系统和硬件优化
9.1 什么限制了MySQL 的性能
9.2 如何为MySQL 选择CPU
9.2.1 哪个更好:更快的CPU 还是更多的CPU
9.2.1 哪个更好:更快的CPU 还是更多的CPU 9.2.2 CPU 架构
9.2.3 扩展到多个CPU 和核⼼
9.3 平衡内存和磁盘资源
9.3.1 随机I/O 和顺序I/O
9.3.2 缓存,读和写
9.3.3 ⼯作集是什么
9.3.4 到有效的内存/ 磁盘⽐例
9.3.5 选择硬盘
9.4 固态存储
9.4.1 闪存概述
9.4.2 闪存技术
9.4.3 闪存的基准测试
9.4.4 固态硬盘驱动器(SSD)
9.4.5 PCIe 存储设备
9.4.6 其他类型的固态存储 .
9.4.7 什么时候应该使⽤闪存
9.4.8 使⽤Flashcache
9.4.9 优化固态存储上的MySQL
9.5 为备库选择硬件
9.6 RAID 性能优化
9.6.1 RAID 的故障转移、恢复和镜像
9.6.2 平衡硬件RAID 和软件RAID
9.6.3 RAID 配置和缓存
9.7 SAN 和NAS
9.7.1 SAN 基准测试
9.7.2 使⽤基于NFS 或SMB 的SAN
9.7.3 MySQL 在SAN 上的性能
9.7.4 应该⽤SAN 吗
9.8 使⽤多磁盘卷
9.9 ⽹络配置
9.10 选择操作系统
9.11 选择⽂件系统
9.12 选择磁盘队列调度策略
9.13 线程
9.14 内存交换区
9.15 操作系统状态
9.15.1 如何阅读vmstat 的输出
9.15.2 如何阅读iostat 的输出
9.15.3 其他有⽤的⼯具
9.15.4 CPU 密集型的机器
9.15.5 I/O 密集型的机器
9.15.6 发⽣内存交换的机器
9.15.7 空闲的机器
mysql下载哪个盘9.16 总结
第10章复制
10.1 复制概述
10.1.1 复制解决的问题
10.1.2 复制如何⼯作
10.2 配置复制
10.2.1 创建复制账号
10.2.2 配置主库和备库
10.2.3 启动复制
10.2.4 从另⼀个服务器开始复制
10.2.5 推荐的复制配置
10.3 复制的原理
10.3.1 基于语句的复制
10.3.2 基于⾏的复制
10.3.3 基于⾏或基于语句:哪种更优
10.3.4 复制⽂件
10.3.5 发送复制事件到其他备库
10.3.6 复制过滤器
10.4 复制拓扑
10.4.1 ⼀主库多备库
10.4.2 主动- 主动模式下的主- 主复制
10.4.3 主动- 被动模式下的主- 主复制
10.4.4 拥有备库的主- 主结构
10.4.5 环形复制
10.4.6 主库、分发主库以及备库
10.4.7 树或⾦字塔形
10.4.8 定制的复制⽅案
10.5 复制和容量规划

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。