序 I
前言 III
第1章:MySQL架构 1
1.1 MySQL的逻辑架构 1
1.2 并发控制 3
1.3 事务 6
1.4 多版本并发控制 12
1.5 MySQL的存储引擎 14
第2章:寻找瓶颈:基准测试(Benchmarking)与性能分析(Profiling) 32
2.1 为什么要进行基准测试 33
2.2 基准测试策略 33
2.3 基准测试工具 42
2.4 基准测试样例 44
2.5 性能分析(Profiling) 54
2.6 分析操作系统 76
第3章:架构优化和索引 80
3.1 选择优化的数据类型 80
3.2 索引基础知识 95
3.3 高性能索引策略 106
3.4 索引实例研究 131
3.5 索引和表维护 136
3.6 正则化和非正则化 139
3.7 加速ALTER TABLE 145
3.8 对存储引擎的说明 149
第4章:查询性能优化 152
4.1 基本原则:优化数据访问 152
4.2 重构查询的方式 157
4.3 查询执行基础知识 160
4.4 MySQL查询优化器的限制 179
4.5 优化特定类型的查询 188
4.6 查询优化提示 195
4.7 用户定义变量 198
第5章:MySQL高级特性 204
5.1 MySQL查询缓存 204
5.2 在MySQL中存储代码 217
5.3 游标 224
5.4 准备语句 225
5.5 用户自定义函数 230
5.6 视图 231
5.7 字符集和排序规则 237
5.8 全文搜索 244
5.9 外键约束 252
5.10 合并表和分区 253
5.11 分布式(XA)事务 262
第6章:优化服务器设置 265
6.1 配置基础知识 266
6.2 通用调优原则 271
6.3 MySQL I/O调优 281
6.4 MySQL并发调优 295
6.5 基于工作负载调优 298
6.6 每联接(Per-Connection)设置调优 304
第7章:操作系统和硬件优化 305
7.1 什么限制了MySQL的性能 306
7.2 如何为MySQL选择CPU 306
7.3 平衡内存和磁盘资源 309
7.4 为从服务器选择硬件 317
7.5 RAID性能优化 317
7.6 存储区域网络和网络附加存储 325
7.7 使用多个磁盘卷 326
7.8 网络配置 328
7.9 选择操作系统 330
7.10 选择文件系统 331
7.11 线程处理 334
7.12 交换 334
7.13 操作系统状态 336
第8章:复制 343
8.1 复制概述 343
8.2 创建复制 347
8.3 揭示复制的真相 355
8.4 复制拓扑 362
8.5 复制和容量规划 376
8.6 复制管理和维护 378
8.7 复制问题和解决方案 388
8.8 复制有多快 405
8.9 MySQL复制的未来 407
第9章:伸缩性与高可用性 409
9.1 术语 410
9.2 MySQL的伸缩性 412
9.3 负载平衡 436
9.4 高可用性 447
第10章:应用层面的优化 457
10.1 应用程序性能概述 457
10.2 Web服务器的议题 460
10.3 缓存 463
10.4 扩展MySQL 470
10.5 可替代的MySQL 471
第11章:备份与还原 472
11.1 概况 473
11.2 要权衡的事项 477
11.3 管理和备份二进制日志 486
11.4 数据备份 488
11.5 从备份中还原 499
11.6 备份和还原的速度 510
11.7 备份工具 511
11.8 脚本化备份 518
第12章:安全 521
12.1 术语 521
12.2 账号的基本知识 522
12.3 操作系统安全 541
12.4 网络安全 542
12.5 数据加密 550
12.6 在Chroot环境里使用MySQL 554
第13章:MySQL服务器的状态 557
13.1 系统变量 557
13.2 SHOW STATUS 558
13.3 SHOW INNODB STATUS 565
13.4 SHOW PROCESSLIST 578
13.5 SHOW MUTEX STATUS 579
13.6 复制的状态 580
13.7 INFORMATION_SCHEMA 581
第14章:用于高性能MySQL的工具 583
14.1 带界面的工具 583
14.2 监控工具 585
14.3 分析工具 595
14.4 MySQL的辅助工具 598
14.5 更多的信息来源 601
附录A:大文件传输 603
附录B:使用EXPLAIN 607
附录C:在MySQL里使用Sphinx 623
附录D:锁的调试 650
索引 659