阿里 P8 都偷偷收藏的“神级”教程之《高性能 MySQL 第 3 版》
《高性能 MySQL(第 3 版)》编辑推荐:“只要你不敢以 MySQL 专家自诩,又岂敢错过这本神书?”“一言以蔽之,写得好,编排得好,需要参考时容易到爆!”“我可是从头到尾看了一遍上一版,可还是毫不犹豫地拿起了这本书,而且看完后一点都不后悔……”
最经典的一本 MySQL 书籍教程
目录
推荐序前言第 1 章 MySQL 架构与历史 1.1MySQL 逻辑架构 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.4MySQL 中的事务 1.4 多版本并发控制 1.5MySQL 的存储引擎 1.5.1InnoDB 存储引擎 1.5.2MyISAM 存储引擎 1.5.3MySQL 内建的其他存储引擎 1.5.4 第三方存储引擎 1.5.5 选择合适的引擎 1.5.6 转换表的引擎 1.6MySQL 时间线(Timeline)1.7MySQL 的开发模式 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_load2.5.2MySQL 基准测试套件 2.5.3sysbench2.5.4 数据库测试套件中的 dbt2TPC—C 测试 2.5.5Percona 的 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 使用 strace3.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.2MySQLschema 设计中的陷阱 4.3 范式和反范式 4.3.1 范式的优点和缺点 4.3.2 反范式的优点和缺点 4.3.3 混用范式化和反范式化 4.4 缓存表和汇总表 4.4.1 物化视图 4.4.2 计数器表 4.5 加快 ALTERTABLE 操作的速度 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.2MySQL 是否在扫描额外的记录 6.3 重构查询的方式 6.3.1 一个复杂查询还是多个简单查询 6.3.2 切分查询 6.3.3 分解关联查询 6.4 查询执行的基础 6.4.1MySQL 客户端/服务器通信协议 6.4.2 查询缓存 6.4.3 查询优化处理 6.4.4 查询执行引擎 6.4.5 返回结果给客户端 6.5MySQL 查询优化器的局限性 6.5.1 关联子查询 6.5.2UNION 的限制 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 优化 GROUPBY 和 DISTINCT6.7.5 优化 LIMIT 分页 6.7.6 优化 SQL_CALC_FOUND_ROWS6.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.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.2SQL 接口的绑定变量 7.6.3 绑定变量的限制 7.7 用户自定义函数 7.8 插件 7.9 字符集和校对 7.9.1MySQL 如何使用字符集 7.9.2 选择字符集和校对规则 7.9.3 字符集和校对规则如何影响查询 7.10 全文索引 7.10.1 自然语言的全文索引 7.10.2 布尔全文索引 7.10.3MySQL5.1 中全文索引的变化 7.10.4 全文索引的限制和替代方案 7.10.5 全文索引的配置和优化 7.11 分布式(XA)事务 7.11.1 内部 XA 事务 7.11.2 外部 XA 事务 7.12 查询缓存 7.12.1MySQL 如何判断缓存命中 7.12.2 查询缓存如何使用内存 7.12.3 什么情况下查询缓存能发挥作用 7.12.4 如何配置和维护查询缓存 7.12.5InnoDB 和查询缓存 7.12.6 通用查询缓存优化 7.12.7 查询缓存的替代方案 7.13 总结……第 8 章优化服务器设置
第 9 章操作系统和硬件优化第 10 章复制第 11 章可扩展的 MySQL 第 12 章高可用性第 13 章云端的 MySQL 第 14 章应用层优化第 15 章备份与恢复第 16 章 MySQL 用户工具
高性能 MySQL 第三版已经整理好电子版,需要的朋友请见文末
MySQL 详解
1、MySQL 架构及发展史
2、MySQL 基准测试
3、服务器性能剖析
4、Schema 与数据类型优化
5、创建高性能的索引
6、查询性能优化
7、MySQL 高级特性
8、优化服务器设置
9、操作系统和硬件优化
10、复制
11、可扩展的 MySQL
什么是可扩展性
扩展 MySQL
负载均衡
12、高可用性
什么是高可用性
导致宕机的原因
如何实现高可用性
避免单点失效
故障转移:和故障恢复
13、应用层优化
14、备份与恢复
欢迎大家扫码来关注公众号博主,获取文章全部资料,此公众号会持续更新技术干货、不定期分享 Java 进阶面试宝典、Java 核心知识、架构书籍电子版
心知识、架构书籍电子版
评论