书刊介绍
《MySQL性能调优与架构设计》内容简介
本书以 MySQL 数据库的基础及维护(基础篇)为切入点,重点介绍了 MySQL 数据库应用系统的性能调优(优化篇),以及高可用可扩展的架构设计(架构篇)。
基础篇的主要内容有:MySQL 数据库介绍,架构组成,存储引擎介绍、安全管理,以及基本的备份恢复知识。
优化篇则从影响 MySQL 数据库应用系统性能的因素开始,对各个因素进行调优分析。包括Schema 设计,Query 语句的性能优化, MySQL Server 中SQL层和存储引擎层的优化思路,以及MySQL 数据库锁定机制的实现。
架构篇则以设计一个高可用可扩展的企业级分布式数据库集群环境为目标,分析了多种通过 MySQL 实现这一目标的架构方式,包括可扩展设计和高可用设计两部分内容,如 Replication 的利用,数据切分,Cache 和 Search 的利用,NDB Cluster ,以及系统监控等。
简朝阳,毕业于南京工业大学管理科学与工程学院,管理学学士。擅长MySQL & Oracle数据库应用系统的性能调优与高可用可扩展架构设计,有一定的Java 和C语言基础。目前就职于阿里巴巴(中国)网络技术有限公司,曾参与过公司多个核心数据库应用系统的设计与实施,目前主要负责 MySQL 数据库应用系统的架构设计与相关维护工作。活跃于 iMySQLer 数据库论坛(http://imysqler.com) 和 MySQL 邮件组(mysqler@googlegroups.com, http://groups.google.com/group/mysqler),欢迎大家以 Open 的心态一起分享 MySQL 数据库方面的经验心得。作品目录
推荐序一
推荐序二
推荐序三
推荐序四
推荐序五
推荐序六
序
言
第1章:MySQL基本介绍
1.0、引言
1.1、MySQL
Server简介
1.1.1、什么是MySQL
1.1.2、艰难诞生
1.1.3、寻求发展
1.1.4、巨人崛起
1.2、MySQL与其他数据库的简单比较
1.2.1、功能比较
1.2.2、易用性比较
1.2.3、性能比较
1.2.4、可靠性
1.3、MySQL
的主要适用场景
1.4、小结
第2章:MySQL架构组成
2.0、引言
2.1、MySQL物理文件组成
2.1.1、日志文件
2.1.2、数据文件
2.1.3、Replication相关文件
2.1.4、其他文件
2.2、MySQL
Server系统架构
2.2.1、逻辑模块组成
2.2.2、各模块工作配合
2.3、MySQL
自带工具使用介绍
2.4、小结
第3章:MySQL存储引擎简介
3.0、引言
3.1、MySQL存储引擎概述
3.2、MyISAM存储引擎简介
3.3、InnoDB存储引擎简介
3.4、NDB
Cluster
存储引擎简介
3.5、其他存储引擎介绍
3.5.1、Merge存储引擎
3.5.2、Memory存储引擎
3.5.3、BDB
存储引擎
3.5.4、FEDERATED存储引擎
3.5.5、ARCHIVE存储引擎
3.5.6、BLACKHOLE存储引擎
3.5.7、CSV存储引擎
3.6、小结
第4章:MySQL安全管理
4.0、引言
4.1、数据库系统安全相关因素
4.1.1、外围网络
4.1.2、主机
4.1.3、数据库
4.1.4、代码
4.2、MySQL
权限系统介绍
4.2.1、权限系统简介
4.2.2、权限授予与去除
4.2.3、权限级别
4.2.4、MySQL访问控制实现原理
4.3、MySQL
访问授权策略
4.4、安全设置注意事项
4.5、小结
第5章:MySQL备份与恢复
5.0、引言
5.1、数据库备份使用场景
5.2、逻辑备份与恢复测试
5.2.1、什么是数据库逻辑备份?
5.2.2、常用的逻辑备份
5.2.3、逻辑备份恢复方法
5.2.4、逻辑备份恢复测试
5.3、物理备份与恢复测试
5.3.1、什么是数据库物理备份
5.3.2、MySQL物理备份所需文件
5.3.3、各存储引擎常用物理备份方法
5.3.4、各存储引擎常用物理备份的恢复方法
5.4、备份策略的设计思路
5.5、小结
第6章:影响MySQL
Server性能的相关因素
6.0、引言
6.1、商业需求对性能的影响
6.1.1、不合理的需求造成资源投入产出比过低
6.1.2、无用功能堆积使系统过度复杂,影响整体性能
6.2、系统架构及实现对性能的影响
6.2.1、数据库中存放的数据都适合在此存放吗?
6.2.2、是否合理地利用了应用层Cache机制?
6.2.3、数据层实现都是最精简的吗?
6.2.4、过度依赖数据库Query语句的功能造成数据库操作效率低下
6.2.5、重复执行相同的Query造成资源浪费
6.3、Query语句对系统性能的影响
6.4、Schema设计对系统的性能影响
6.5、硬件环境对系统性能的影响
6.6、小结
第7章:MySQL数据库锁定机制
7.0、引言
7.1、MySQL锁定机制简介
7.2、各种锁定机制分析
7.2.1、表级锁定
7.2.2、读锁定
7.2.3、写锁定
7.2.4、行级锁定
7.3、合理利用锁机制优化MySQL
7.3.1、MyISAM表锁优化建议
7.3.2、InnoDB行锁优化建议
7.3.3、系统锁定争用情况查询
7.4、小结
第8章:MySQL数据库Query的优化
8.0、引言
8.1、理解MySQL的Query
Optimizer
8.1.1、MySQL
Query
Optimizer是什么?
8.1.2、MySQL
Query
Optimizer基本工作原理
8.2、Query
语句优化基本思路和原则
8.3、充分利用
Explain
和
Profiling
8.3.1、Explain
的使用
8.3.2、Profiling
的使用
8.4、合理设计并利用索引
8.4.1、B-Tree
索引
8.4.2、Hash
索引
8.4.3、Full-text
索引
8.4.4、R-Tree
索引
8.4.5、索引的利弊与如何判定,是否需要索引
8.4.6、单键索引还是组合索引
8.4.7、Query
的索引选择
8.4.8、MySQL中索引的限制
8.5、Join的实现原理及优化思路
8.5.1、Join
的实现原理
8.5.2、Join
语句的优化
8.6、ORDER
BY、GROUP
BY和DISTINCT的优化
8.6.1、ORDER
BY的实现与优化
8.6.2、GROUP
BY
的实现与优化
8.6.3、DISTINCT
的实现与优化
8.7、小结
第9章:MySQL数据库Schema
9.0、引言
9.1、高效的模型设计
9.1.1、适度冗余——让Query尽量减少Join
9.1.2、大字段垂直分拆——summary表优化
9.1.3、大表水平分拆——基于类型的分拆优化
9.2、合适的数据类型
9.2.1、数字日期类型
9.2.2、字符存储类型
9.2.3、其他常用类型
9.3、规范的对象命名
9.4、小结
第10章:MySQL
Server性能优化
10.0、引言
10.1、MySQL安装优化
10.1.1、选择合适的发行版本
10.2、MySQL日志设置优化
10.2.1、日志产生的性能影响
10.2.2、二进制日志(Binlog)相关参数及优化策略
10.2.3、慢查询日志(Slow
Query
Log)相关参数及使用建议
10.3、Query
Cache
优化
10.3.1、适度使用Query
Cache
10.3.2、Query
Cache的相关系统参数变量和状态变量
10.3.3、Query
Cache的限制
10.4、MySQL
Server
其他常用优化
10.4.1、网络连接与连接线程
10.4.2、Table
Cache相关的优化
10.4.3、Sort
Buffer、Join
Buffer和Read
Buffer
10.5、小结
第11章:常用存储引擎优化
11.0、引言
11.1、MyISAM存储引擎优化
11.1.1、索引缓存优化
11.1.2、多Key
Cache的使用
11.1.3、Key
Cache的Mutex问题
11.1.4、Key
Cache预加载
11.1.5、NULL值对统计信息的影响
11.1.6、表读取缓存优化
11.1.7、并发优化
11.1.8、其他可以优化的地方
11.2、InnoDB
存储引擎优化
11.2.1、InnoDB缓存相关优化
11.2.2、事务优化
11.2.3、数据存储优化
11.2.4、Innodb其他优化
11.2.5、Innodb性能监控
11.3、小结
第12章:MySQL可扩展设计的基本原则
12.0、引言
12.1、什么是可扩展性
12.2、事务相关性最小化原则
12.3、数据一致性原则
12.4、高可用及数据安全原则
12.5、小结
第13章:可扩展性设计之
13.0、引言
13.1、Replication
对可扩展性设计的意义
13.2、Replication
机制的实现原理
13.2.1、Replication
线程
13.2.2、复制实现级别
13.3、Replication常用架构
13.3.1、常规复制架构(Master
-
Slaves)
13.3.2、Dual
Master复制架构(Master
-
Master)
13.3.3、级联复制架构(Master
-
Slaves
-
Slaves
...)
13.3.4、Dual
Master
与级联复制结合架构(Master
-
Master
-
Slaves)
13.4、Replication搭建实现
13.5、小结
第14章:可扩展性设计之数据切分
14.0、引言
14.1、何谓数据切分
14.2、数据的垂直切分
14.3、数据的水平切分
14.4、垂直与水平联合切分的使用
14.5、数据切分及整合方案
14.6、数据切分与整合中可能存在的问题
14.7、小结
第15章:可扩展性设计之
15.0、引言
15.1、可扩展设计的数据库之外延伸
15.2、合理利用第三方Cache解决方案
15.2.1、分布式内存
Cache
软件
Memcached
15.2.2、嵌入式数据库编程库
Berkeley
DB
15.3、自行实现Cache服务
15.4、利用Search实现高效的全文检索
15.5、利用分布式并行计算实现大数据量的高性能运算
15.6、小结
第16章:MySQL
Cluster
16.0、引言
16.1、MySQL
Cluster介绍
16.2、MySQL
Cluster环境搭建
16.3、MySQL
Cluster配置详细介绍(config.ini)
16.4、MySQL
Cluster基本管理与维护
16.5、基本优化思路
16.6、小结
第17章:高可用设计思路及方案
17.0、引言
17.1、利用
Replication
来实现高可用架构
17.1.1、用常规Master-Slave架构实现基本主备设计
17.1.2、Master单点问题的解决
17.1.3、Dual
Master
与级联复制结合解决异常故障下的高可用
17.1.4、Dual
Master与级联复制结合解决在线DDL变更问题
17.2、利用MySQL
Cluster实现整体高可用
17.2.1、SQL
节点的高可靠性保证
17.2.2、NDB
节点的高可靠性保证
17.3、利用DRBD保证数据的高安全可靠
17.3.1、DRBD介绍
17.3.2、DRBD
特性与限制
17.4、其他高可用设计方案
17.5、各种高可用方案的利弊比较
17.6、小结
第18章:高可用设计之MySQL监控
18.0、引言
18.1、监控系统设计
18.2、健康状态监控
18.2.1、主机健康状态监控
18.2.2、数据库健康状态信息
18.3、性能状态监控
18.3.1、主机性能状态
18.3.2、数据库性能状态
18.4、常用开源监控软件
18.5、小结
附录A
实验测试
Schema
创建脚本
附录B
MySQL部分系统
附录C
MySQL部分状态说明