书刊介绍
《千金良方: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等监控工具。
李春:原阿里巴巴MySQLDBA团队技术Leader,全程参与阿里数据库架构从Oracle迁移到MySQL的过程,参与分布式中间件Cobar设计。现为沃趣科技联合创始人&首席架构师,负责MySQL、基础软件及部分关键组件的技术选型、风险评估等。罗小波:沃趣科技高级数据库工程师,主要负责MySQL产品的数据库支撑与售后二线支撑。曾参与版本发布系统、轻量级监控系统、运维管理平台、数据库管理平台的设计与编写,熟悉MySQL体系结构,Innodb存储引擎,喜好专研开源技术,多次在公开场合做过线下线上数据库专题分享,发表过多篇与数据库相关的研究文章。董红禹:沃趣科技MySQLDBA,为过多家大型企业进行过故障解决、架构设计、性能优化,例如中信证券、浙江农信、陕西农信、邮储银行等。规划并实施了浙江农信互联网核心金融平台。作品目录
推荐序1、推荐序2、推荐序3、前言
基础篇
第1章:MySQL初始化安装、简单安全加固
1.1、背景
1.2、初始化安装
1.3、简单安全加固
1.4、创建用户、库、表、数据
1.5、MySQL参数模板
第2章:MySQL常用的两种升级方法
2.1、背景
2.2、MySQL
5.5.54的安装
2.3、升级MySQL
5.5.54到MySQL
5.6.35、2.4、升级注意事项
第3章:MySQL体系结构
3.1、快速安装MySQL
3.2、数据目录结构
3.3、MySQL
Server体系结构
3.4、MySQL中的存储引擎
3.5、InnoDB存储引擎体系结构
3.6、InnoDB存储引擎后台线程
3.7、MySQL前台线程
第4章:performance_schema初相识
4.1、什么是performance_schema
4.2、performance_schema使用快速入门
第5章:performance_schema配置详解
5.1、编译时配置
5.2、启动时配置
5.3、运行时配置
第6章:performance_schema应用示例荟萃
6.1、利用等待事件排查MySQL性能问题
6.2、锁问题排查
6.3、查看最近的SQL语句执行信息
6.4、查看SQL语句执行阶段和进度信息
6.5、查看最近的事务执行信息
6.6、查看多线程复制报错详情
第7章:sys系统库初相识
7.1、sys系统库使用基础环境
7.2、sys系统库初体验
7.3、sys系统库的进度报告功能
第8章:sys系统库配置表
8.1、sys_config表
8.2、sys_config_insert_set_user触发器
8.3、sys_config_update_set_user触发器
第9章:sys系统库应用示例荟萃
9.1、查看慢SQL语句慢在哪里
9.2、查看是否有事务锁等待
9.3、查看是否有MDL锁等待
9.4、查看InnoDB缓冲池中的热点数据有哪些
9.5、查看冗余索引
9.6、查看未使用的索引
9.7、查询表的增、删、改、查数据量和I/O耗时统计信息
9.8、查看MySQL磁盘文件产生的磁盘流量与读写比例
9.9、查看哪些语句使用了全表扫描
9.10、查看哪些语句使用了文件排序
9.11、查看哪些语句使用了临时表
第10章:information_schema初相识
10.1、什么是information_schema
10.2、information_schema组成对象
第11章:information_schema应用示例荟萃
11.1、使用Server层的字典表查询相关的元数据信息
11.2、使用InnoDB层的字典表查询相关的元数据信息
第12章:mysql系统库之权限系统表
12.1、user
12.2、db
12.3、tables_priv
12.4、columns_priv
12.5、procs_priv
12.6、proxies_priv
第13章:mysql系统库之访问权限控制系统
13.1、访问权限控制系统概述
13.2、MySQL提供了哪些权限
13.3、MySQL账号命名规则
13.4、MySQL账号访问控制两阶段
13.5、权限变更的影响
13.6、MySQL常见连接问题
第14章:mysql系统库之统计信息表
14.1、统计信息概述
14.2、统计信息表详解
第15章:mysql系统库之复制信息表
15.1、复制信息表概述
15.2、复制信息表详解
第16章:mysql系统库之日志记录表
16.1、日志信息概述
16.2、日志表详解
第17章:mysql系统库应用示例荟萃
17.1、查看用户不同作用域的权限
17.2、查看统计信息
17.3、查看SQL日志信息
第18章:复制技术的演进
18.1、复制格式概述
18.2、基于数据安全的复制技术演进
18.3、基于复制效率的复制技术演进
第19章:事务概念基础
19.1、4种事务隔离级别和3种异常现象
19.2、从事务提交谈起
19.3、MySQL中的Redo日志
19.4、MVCC介绍
第20章:InnoDB锁
20.1、InnoDB锁概述
20.2、加锁验证
第21章:SQL优化
21.1、SQL优化基础概念
21.2、MySQL中的Join算法
21.3、MySQL中的优化特性
第22章:MySQL读写扩展
22.1、分布式架构概述
22.2、分库分表两种方式
22.3、中间件工作方式及原理
22.4、架构设计及业务场景
22.5、关于中间件的一些限制解释
案例篇
第23章:性能测试指标和相关术语
23.1、测试目标分类
23.2、性能测试指标
23.3、本章小结
第24章:历史问题诊断和现场故障分析
24.1、故障分析和验证
24.2、故障复现排查
24.3、本章小结
第25章:性能调优金字塔
25.1、硬件和系统调优
25.2、MySQL调优
25.3、架构调优
25.4、本章小结
第26章:SQL语句执行慢真假难辨
26.1、概述
26.2、测试环境
26.3、采集数据包
26.4、解析数据包
26.5、本章小结
第27章:如何避免三天两头换硬盘、内存、主板
27.1、概述
27.2、服务器标准化
27.3、上线前烤机
27.4、本章小结
第28章:每隔45天的MySQL性能低谷
28.1、存储知识小普及
28.2、每隔45天的性能抖动
28.3、影响I/O性能的三种RAID策略
28.4、本章小结
第29章:MySQL连接无法自动释放
29.1、环境配置
29.2、问题现象
29.3、诊断分析
29.4、解决方案
29.5、本章小结
第30章:查询MySQL偶尔比较慢
30.1、环境配置
30.2、问题现象
30.3、诊断分析
30.4、选择VIP还是DNS访问MySQL
30.5、CPU节能模式
30.6、本章小结
第31章:MySQL最多只允许214个连接
31.1、环境配置
31.2、问题现象
31.3、诊断分析
31.4、解决方案
31.5、MySQL最大连接数为214的源码解析
31.6、Linux资源限制
31.7、本章小结
第32章:MySQL挂起诊断思路
32.1、环境配置
32.2、问题现象
32.3、诊断分析
32.4、挂起时先做什么
32.5、本章小结
第33章:硬件和系统调优
33.1、硬件和系统调优概览
33.2、CPU
33.3、网络
33.4、其他
33.5、本章小结
第34章:并发删除数据造成死锁
34.1、问题现象
34.2、如何阅读死锁日志
34.3、表结构及操作步骤
34.4、本章小结
第35章:删除不存在的数据造成死锁
35.1、问题现象
35.2、问题分析
35.3、问题扩展
35.4、表结构及操作步骤
35.5、小章小结
第36章:插入意向锁死锁
36.1、问题现象
36.2、问题分析
36.3、本章小结
第37章:分页查询优化
37.1、问题现象
37.2、优化方案
第38章:子查询优化——子查询转换为连接
38.1、问题现象
38.2、优化方案
第39章:子查询优化——使用delete删除数据
39.1、问题现象
39.2、优化方案
工具篇
第40章:硬件规格常用查看命令详解
40.1、通用命令
40.2、CPU相关命令
40.3、磁盘相关命令
40.4、网卡相关命令
40.5、HCA卡相关命令
第41章:系统负载常用查看命令详解
41.1、top
41.2、dstat
41.3、mpstat
41.4、sar
41.5、vmstat
41.6、iostat
41.7、free
41.8、iotop
41.9、iftop
41.10、iperf
第42章:FIO存储性能压测
42.1、安装FIO
42.2、测试I/O性能
42.3、参数和结果详解
42.4、FIO测试建议
42.5、课外阅读
第43章:HammerDB在线事务处理测试
43.1、安装和配置HammerDB
43.2、测试
43.3、课外阅读
第44章:sysbench数据库压测工具
44.1、安装sysbench
44.2、测试案例
44.3、sysbench
参数详解
44.4、数据库测试输出信息详解
44.5、课外阅读
第45章:mysqladmin和innotop工具详解
45.1、mysqladmin
45.2、innotop
第46章:利用Prometheus+Grafana搭建炫酷的MySQL监控平台
46.1、安装Prometheus
46.2、安装Grafana
46.3、监控节点部署
第47章:Percona
Toolkit常用工具详解
47.1、pt-query-digest
47.2、pt-ioprofile
47.3、pt-index-usage
47.4、pt-duplicate-key-checker
47.5、pt-mysql-summary/pt-summary
47.6、pt-pmp
47.7、pt-stalk
47.8、pt-sift
第48章:MySQL主流备份工具之mysqldump详解
48.1、简介
48.2、原理
48.3、命令行选项
48.4、实战演示
第49章:MySQL主流备份工具之XtraBackup详解
49.1、简介
49.2、原理
49.3、命令行选项
49.4、实战演示
第50章:MySQL主流备份工具之mydumper详解
50.1、简介
50.2、原理
50.3、命令行选项
50.4、实战演示
第51章:MySQL主流闪回工具详解
51.1、闪回工具科普
51.2、binlog2sql
51.3、MyFlash