《高性能MySQL(第3版)》编辑推荐:“只要你不敢以MySQL专家自诩,又岂敢错过这本神书?”“一言以蔽之,写得好,编排得好,需要参考时容易到爆!”“我可是从头到尾看了一遍上一版,可还是毫不犹豫拿起了这本书,而且看完后一点都不后悔……”
内容提要
《高性能MySQL(第3版)》是MySQL 领域的经典之作,拥有广泛的影响力。第3 版更新了大量的内容,不但涵盖了最新MySQL 5.5版本的新特性,也讲述了关于固态盘、高可扩展性设计和云计算环境下的数据库相关的新内容,原有的基准测试和性能优化部分也做了大量的扩展和补充。全书共分为16 章和6 个附录,内容涵盖MySQL 架构和历史,基准测试和性能剖析,数据库软硬件性能优化,复制、备份和恢复,高可用与高可扩展性,以及云端的MySQL 和MySQL相关工具等方面的内容。每一章都是相对独立的主题,读者可以有选择性地单独阅读。
本书不但适合数据库管理员(DBA)阅读,也适合开发人员参考学习。不管是数据库新手还是专家,相信都能从本书有所收获。
目录
推荐序
前言
第1章MySQL架构与历史1
1.1MySQL逻辑架构1
1.1.1连接管理与安全性2
1.1.2优化与执行3
1.2并发控制3
1.2.1读写锁4
1.2.2锁粒度4
1.3事务6
1.3.1隔离级别8
1.3.2死锁9
1.3.3事务日志10
1.3.4MySQL中的事务10
1.4多版本并发控制12
1.5MySQL的存储引擎13
1.5.1InnoDB存储引擎16
1.5.2MyISAM存储引擎17
1.5.3MySQL内建的其他存储引擎19
1.5.4第三方存储引擎22
1.5.5选择合适的引擎24
1.5.6转换表的引擎27
1.6MySQL时间线(Timeline)29
1.7MySQL的开发模式32
1.8总结33
第2章MySQL基准测试35
2.1为什么需要基准测试35
2.2基准测试的策略37
2.2.1测试何种指标38
2.3基准测试方法40
2.3.1设计和规划基准测试41
2.3.2基准测试应该运行多长时间42
2.3.3获取系统性能和状态43
2.3.4获得准确的测试结果44
2.3.5运行基准测试并分析结果46
2.3.6绘图的重要性47
2.4基准测试工具49
2.4.1集成式测试工具49
2.4.2单组件式测试工具50
2.5基准测试案例52
2.5.1_load53
2.5.2MySQL基准测试套件54
2.5.3sysbench55
2.5.4数据库测试套件中的dbt2TPC—C测试60
2.5.5Percona的TPCC—MySQL测试工具63
2.6总结65
第3章服务器性能剖析67
3.1性能优化简介67
3.1.1通过性能剖析进行优化69
3.1.2理解性能剖析71
3.2对应用程序进行性能剖析72
3.2.1测量PHP应用程序74
3.3剖析MySQL查询77
3.3.1剖析服务器负载77
3.3.2剖析单条查询81
3.3.3使用性能剖析87
3.4诊断间歇性问题88
3.4.1单条查询问题还是服务器问题89
3.4.2捕获诊断数据93
3.4.3一个诊断案例98
3.5其他剖析工具106
3.5.1使用USER_STATISTICS表106
3.5.2使用strace107
3.6总结108
第4章Schema与数据类型优化111
4.1选择优化的数据类型111
4.1.1整数类型113
4.1.2实数类型113
4.1.3字符串类型114
4.1.4日期和时间类型121
4.1.5位数据类型123
4.1.6选择标识符(identifier)125
4.1.7特殊类型数据127
4.2MySQLschema设计中的陷阱127
4.3范式和反范式129
4.3.1范式的优点和缺点130
4.3.2反范式的优点和缺点130
4.3.3混用范式化和反范式化131
4.4缓存表和汇总表132
4.4.1物化视图134
4.4.2计数器表135
4.5加快ALTERTABLE操作的速度136
4.5.1只修改.frm文件137
4.5.2快速创建MyISAM索引139
4.6总结140
第5章创建高性能的索引141
5.1索引基础141
5.1.1索引的类型142
5.2索引的优点152
5.3高性能的索引策略153
5.3.1独立的列153
5.3.2前缀索引和索引选择性153
5.3.3多列索引157
5.3.4选择合适的索引列顺序159
5.3.5聚簇索引162
5.3.6覆盖索引171
5.3.7使用索引扫描来做排序175
5.3.8压缩(前缀压缩)索引177
5.3.9冗余和重复索引178
5.3.10未使用的索引181
5.3.11索引和锁181
5.4索引案例学习183
5.4.1支持多种过滤条件183
5.4.2避免多个范围条件185
5.4.3优化排序186
5.5维护索引和表187
5.5.1找到并修复损坏的表187
5.5.2更新索引统计信息188
5.5.3减少索引和数据的碎片190
5.6总结192
第6章查询性能优化195
6.1为什么查询速度会慢195
6.2慢查询基础:优化数据访问196
6.2.1是否向服务器请求了不需要的数据196
6.2.2MySQL是否在扫描额外的记录198
6.3重构查询的方式201
6.3.1一个复杂查询还是多个简单查询201
6.3.2切分查询202
6.3.3分解关联查询203
6.4查询执行的基础204
6.4.1MySQL客户端/服务器通信协议205
6.4.2查询缓存208
6.4.3查询优化处理208
6.4.4查询执行引擎222
6.4.5返回结果给客户端223
6.5MySQL查询优化器的局限性223
6.5.1关联子查询223
6.5.2UNION的限制228
6.5.3索引合并优化228
6.5.4等值传递229
6.5.5并行执行229
6.5.6哈希关联229
6.5.7松散索引扫描229
6.5.8最大值和最小值优化231
6.5.9在同一个表上查询和更新232
6.6查询优化器的提示(hint)232
6.7优化特定类型的查询236
6.7.1优化COUNT()查询236
6.7.2优化关联查询239
6.7.3优化子查询239
6.7.4优化GROUPBY和DISTINCT239
6.7.5优化LIMIT分页241
6.7.6优化SQL_CALC_FOUND_ROWS243
6.7.7优化UNION查询243
6.7.8静态查询分析244
6.7.9使用用户自定义变量244
6.8案例学习251
6.8.1使用MySQL构建一个队列表251
6.8.2计算两点之间的距离254
6.8.3使用用户自定义函数257
6.9总结258
第7章MySQL高级特性259
7.1分区表259
7.1.1分区表的原理260
7.1.2分区表的类型261
7.1.3如何使用分区表262
7.1.4什么情况下会出问题263
7.1.5查询优化266
7.1.6合并表267
7.2视图270
7.2.1可更新视图272
7.2.2视图对性能的影响273
7.2.3视图的限制274
7.3外键约束275
7.4在MySQL内部存储代码276
7.4.1存储过程和函数278
7.4.2触发器279
7.4.3事件281
7.4.4在存储程序中保留注释283
7.5游标283
7.6绑定变量284
7.6.1绑定变量的优化286
7.6.2SQL接口的绑定变量286
7.6.3绑定变量的限制288
7.7用户自定义函数289
7.8插件290
7.9字符集和校对291
7.9.1MySQL如何使用字符集292
7.9.2选择字符集和校对规则295
7.9.3字符集和校对规则如何影响查询296
7.10全文索引299
7.10.1自然语言的全文索引300
7.10.2布尔全文索引302
7.10.3MySQL5.1中全文索引的变化303
7.10.4全文索引的限制和替代方案304
7.10.5全文索引的配置和优化306
7.11分布式(XA)事务307
7.11.1内部XA事务307
7.11.2外部XA事务308
7.12查询缓存309
7.12.1MySQL如何判断缓存命中309
7.12.2查询缓存如何使用内存311
7.12.3什么情况下查询缓存能发挥作用313
7.12.4如何配置和维护查询缓存316
7.12.5InnoDB和查询缓存319
7.12.6通用查询缓存优化320
7.12.7查询缓存的替代方案321
7.13总结321
……
第8章优化服务器设置325
第9章操作系统和硬件优化377
第10章复制433
第11章可扩展的MySQL501
第12章高可用性543
第13章云端的MySQL563
第14章应用层优化577
第15章备份与恢复593
第16章MySQL用户工具635
附录AMySQL分支与变种649
附录BMySQL服务器状态655
附录C大文件传输683
附录DEXPLAIN687
附录E锁的调试703
附录F在MySQL上使用Sphinx713
索引739
高性能MySQL(第3版) 中文PDF带目录清晰版可从以下信息得到下载: