图书介绍
高性能MySQL 第3版2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载

- BARON SCBWARTZ,PETER ZAITSEV,VADIM TKACBENKO著;宁海元,周振兴,彭立勋等译 著
- 出版社: 北京:电子工业出版社
- ISBN:9787121198854
- 出版时间:2013
- 标注页数:764页
- 文件大小:357MB
- 文件页数:798页
- 主题词:关系数据库系统
PDF下载
下载说明
高性能MySQL 第3版PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第1章MySQL架构与历史1
1.1 MySQL逻辑架构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.4 MySQL中的事务10
1.4多版本并发控制12
1.5 MySQL的存储引擎13
1.5.1 InnoDB存储引擎16
1.5.2 MyISAM存储引擎17
1.5.3 MySQL内建的其他存储引擎19
1.5.4第三方存储引擎22
1.5.5选择合适的引擎24
1.5.6转换表的引擎27
1.6 MySQL时间线(Timeline)29
1.7 MySQL的开发模式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 http_load53
2.5.2 MySQL基准测试套件54
2.5.3 sysbench55
2.5.4数据库测试套件中的dbt2 TPC-C测试60
2.5.5 Percona的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选择标识符(identifiier)125
4.1.7特殊类型数据127
4.2 MySQL schema设计中的陷阱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加快ALTER TABLE操作的速度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.2 MySQL是否在扫描额外的记录198
6.3重构查询的方式201
6.3.1一个复杂查询还是多个简单查询201
6.3.2切分查询202
6.3.3分解关联查询203
6.4查询执行的基础204
6.4.1 MySQL客户端/服务器通信协议205
6.4.2查询缓存208
6.4.3查询优化处理208
6.4.4查询执行引擎222
6.4.5返回结果给客户端223
6.5 MySQL查询优化器的局限性223
6.5.1关联子查询223
6.5.2 UNION的限制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优化GROUP BY和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.2 SQL接口的绑定变量286
7.6.3绑定变量的限制288
7.7用户自定义函数289
7.8插件290
7.9字符集和校对291
7.9.1 MySQL如何使用字符集292
7.9.2选择字符集和校对规则295
7.9.3字符集和校对规则如何影响查询296
7.10全文索引299
7.10.1自然语言的全文索引300
7.10.2布尔全文索引302
7.10.3 MySQL 5.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.1 MySQL如何判断缓存命中309
7.12.2查询缓存如何使用内存311
7.12.3什么情况下查询缓存能发挥作用313
7.12.4如何配置和维护查询缓存316
7.12.5 InnoDB和查询缓存319
7.12.6通用查询缓存优化320
7.12.7查询缓存的替代方案321
7.13总结321
第8章优化服务器设置325
8.1 MySQL配置的工作原理326
8.1.1语法、作用域和动态性327
8.1.2设置变量的副作用328
8.1.3入门331
8.1.4通过基准测试迭代优化332
8.2什么不该做333
8.3创建MySQL配置文件335
8.3.1检查MySQL服务器状态变量339
8.4配置内存使用340
8.4.1 MySQL可以使用多少内存340
8.4.2每个连接需要的内存341
8.4.3为操作系统保留内存341
8.4.4为缓存分配内存342
8.4.5 InnoDB缓冲池(Buffer Pool)342
8.4.6 MyISAM键缓存(Key Caches)344
8.4.7线程缓存346
8.4.8表缓存(Table Cache)347
8.4.9 InnoDB数据字典(Data Dictionary)348
8.5配置MySQL的I/O行为349
8.5.1 InnoDB I/O配置349
8.5.2 MyISAM的I/O配置361
8.6配置MySQL并发363
8.6.1 InnoDB并发配置364
8.6.2 MyISAM并发配置365
8.7基于工作负载的配置366
8.7.1优化BLOB和TEXT的场景367
8.7.2优化排序(Filesorts)368
8.8完成基本配置369
8.9安全和稳定的设置371
8.10高级InnoDB设置374
8.11总结376
第9章操作系统和硬件优化377
9.1什么限制了MySQL的性能377
9.2如何为MySQL选择CPU378
9.2.1哪个更好:更快的CPU还是更多的CPU378
9.2.2 CPU架构380
9.2.3扩展到多个CPU和核心381
9.3平衡内存和磁盘资源382
9.3.1随机I/O和顺序I/O383
9.3.2缓存,读和写384
9.3.3工作集是什么385
9.3.4找到有效的内存/磁盘比例386
9.3.5选择硬盘387
9.4固态存储389
9.4.1闪存概述390
9.4.2闪存技术391
9.4.3闪存的基准测试392
9.4.4固态硬盘驱动器(SSD)393
9.4.5 PCIe存储设备395
9.4.6其他类型的固态存储396
9.4.7什么时候应该使用闪存396
9.4.8使用Flashcache397
9.4.9优化固态存储上的MySQL399
9.5为备库选择硬件402
9.6 RAID性能优化403
9.6.1 RAID的故障转移、恢复和镜像405
9.6.2平衡硬件RAID和软件RAID406
9.6.3 RAID配置和缓存407
9.7 SAN和NAS410
9.7.1 SAN基准测试411
9.7.2使用基于NFS或SMB的SAN412
9.7.3 MySQL在SAN上的性能412
9.7.4应该用SAN吗413
9.8使用多磁盘卷414
9.9网络配置416
9.10选择操作系统418
9.11选择文件系统419
9.12选择磁盘队列调度策略421
9.13线程422
9.14内存交换区422
9.15操作系统状态424
9.15.1如何阅读vmstat的输出425
9.15.2如何阅读iostat的输出426
9.15.3.其他有用的工具428
9.15.4 CPU密集型的机器428
9.15.5 I/O密集型的机器429
9.15.6发生内存交换的机器430
9.15.7空闲的机器430
9.16总结431
第10章复制433
10.1复制概述433
10.1.1复制解决的问题434
10.1.2复制如何工作435
10.2配置复制436
10.2.1创建复制账号437
10.2.2配置主库和备库437
10.2.3启动复制439
10.2.4从另一个服务器开始复制441
10.2.5推荐的复制配置443
10.3复制的原理445
10.3.1基于语句的复制445
10.3.2基于行的复制446
10.3.3基于行或基于语句:哪种更优446
10.3.4复制文件448
10.3.5发送复制事件到其他备库449
10.3.6复制过滤器450
10.4复制拓扑452
10.4.1一主库多备库452
10.4.2主动-主动模式下的主-主复制453
10.4.3主动-被动模式下的主-主复制455
10.4.4拥有备库的主-主结构456
10.4.5环形复制457
10.4.6主库、分发主库以及备库458
10.4.7树或金字塔形460
10.4.8定制的复制方案460
10.5复制和容量规划465
10.5.1为什么复制无法扩展写操作466
10.5.2备库什么时候开始延迟466
10.5.3规划冗余容量467
10.6复制管理和维护468
10.6.1监控复制468
10.6.2测量备库延迟469
10.6.3确定主备是否一致469
10.6.4从主库重新同步备库470
10.6.5改变主库471
10.6.6在一个主-主配置中交换角色476
10.7复制的问题和解决方案477
10.7.1数据损坏或丢失的错误477
10.7.2使用非事务型表480
10.7.3混合事务型和非事务型表480
10.7.4不确定语句481
10.7.5主库和备库使用不同的存储引擎481
10.7.6备库发生数据改变481
10.7.7不唯一的服务器ID482
10.7.8未定义的服务器ID482
10.7.9对未复制数据的依赖性482
10.7.10丢失的临时表483
10.7.11不复制所有的更新484
10.7.12 InnoDB加锁读引起的锁争用484
10.7.13在主-主复制结构中写入两台主库486
10.7.14过大的复制延迟488
10.7.15来自主库的过大的包491
10.7.16受限制的复制带宽491
10.7.17磁盘空间不足492
10.7.18复制的局限性492
10.8复制有多快492
10.9 MySQL复制的高级特性494
10.10其他复制技术496
10.11总结498
第11章可扩展的MySQL501
11.1什么是可扩展性501
11.1.1正式的可扩展性定义503
11.2扩展MySQL507
11.2.1规划可扩展性507
11.2.2为扩展赢得时间508
11.2.3向上扩展509
11.2.4向外扩展510
11.2.5通过多实例扩展525
11.2.6通过集群扩展526
11.2.7向内扩展530
11.3负载均衡532
11.3.1直接连接534
11.3.2引入中间件537
11.3.3一主多备间的负载均衡540
11.4总结541
第12章高可用性543
12.1什么是高可用性543
12.2导致宕机的原因544
12.3如何实现高可用性545
12.3.1提升平均失效时间(MTBF)545
12.3.2降低平均恢复时间(MTTR)547
12.4避免单点失效548
12.4.1共享存储或磁盘复制549
12.4.2 MySQL同步复制551
12.4.3基于复制的冗余555
12.5故障转移和故障恢复556
12.5.1提升备库或切换角色558
12.5.2虚拟IP地址或IP接管558
12.5.3中间件解决方案559
12.5.4在应用中处理故障转移560
12.6总结560
第13章云端的MySQL563
13.1云的优点、缺点和相关误解564
13.2 MySQL在云端的经济价值566
13.3云中的MySQL的可扩展性和高可用性567
13.4四种基础资源568
13.5 MySQL在云主机上的性能569
13.5.1在云端的MySQL基准测试571
13.6 MySQL数据库即服务(DBaaS)573
13.6.1 Amazon RDS573
13.6.2其他DBaaS解决方案574
13.7总结575
第14章应用层优化577
14.1常见问题577
14.2 Web服务器问题579
14.2.1寻找最优并发度581
14.3缓存582
14.3.1应用层以下的缓存583
14.3.2应用层缓存584
14.3.3缓存控制策略586
14.3.4缓存对象分层587
14.3.5预生成内容588
14.3.6作为基础组件的缓存589
14.3.7使用HandlerSocket和memcached589
14.4拓展MySQL590
14.5 MySQL的替代品590
14.6总结591
第15章备份与恢复593
15.1为什么要备份594
15.2定义恢复需求595
15.3设计MySQL备份方案596
15.3.1在线备份还是离线备份597
15.3.2逻辑备份还是物理备份598
15.3.3备份什么601
15.3.4存储引擎和一致性603
15.4管理和备份二进制日志605
15.4.1二进制日志格式606
15.4.2安全地清除老的二进制日志607
15.5备份数据607
15.5.1生成逻辑备份607
15.5.2文件系统快照610
15.6从备份中恢复617
15.6.1恢复物理备份618
15.6.2还原逻辑备份619
15.6.3基于时间点的恢复622
15.6.4更高级的恢复技术624
15.6.5 InnoDB崩溃恢复625
15.7备份和恢复工具628
15.7.1 MySQL Enterprise Backup628
15.7.2 Percona XtraBackup628
15.7.3 mylvmbackup629
15.7.4 Zmanda Recovery Manager629
15.7.5 mydumper629
15.7.6 mysqldump629
15.8备份脚本化631
15.9总结633
第16章MySQL用户工具635
16.1接口工具635
16.2命令行工具集636
16.3 SQL实用集637
16.4监测工具637
16.4.1开源的监控工具638
16.4.2商业监控系统640
16.4.3 Innotop的命令行监控642
16.5总结646
附录A MySQL分支与变种649
附录B MySQL服务器状态655
附录C大文件传输683
附录D EXPLAIN687
附录E锁的调试703
附录F在MySQL上使用Sphinx713
索引739