图书介绍
高性能MySQL 第3版pdf电子书版本下载
- 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_load 53
2.5.2 MySQL基准测试套件 54
2.5.3 sysbench 55
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使用strace 107
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和DISTINCT 239
6.7.5优化LIMIT分页 241
6.7.6优化SQL_ CALC FOUND ROWS 243
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选择CPU 378
9.2.1哪个更好:更快的CPU还是更多的CPU 378
9.2.2 CPU架构 380
9.2.3扩展到多个CPU和核心 381
9.3平衡内存和磁盘资源 382
9.3.1随机I/O和顺序I/O 383
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使用Flashcache 397
9.4.9优化固态存储上的MySQL 399
9.5为备库选择硬件 402
9.6 RAID性能优化 403
9.6.1 RAID的故障转移、恢复和镜像 405
9.6.2平衡硬件RAID和软件RAID 406
9.6.3 RAID配置和缓存 407
9.7 SAN和NAS 410
9.7.1 SAN基准测试 411
9.7.2使用基于NFS或SMB的SAN 412
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不唯一的服务器ID 482
10.7.8未定义的服务器ID 482
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章可扩展的MySQL 501
11.1什么是可扩展性 501
11.1.1正式的可扩展性定义 503
11.2扩展MySQL 507
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章云端的MySQL 563
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 RDS 573
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和memcached 589
14.4拓展MySQL 590
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 Backup 628
15.7.2 Percona XtraBackup 628
15.7.3 mylvmbackup 629
15.7.4 Zmanda Recovery Manager 629
15.7.5 mydumper 629
15.7.6 mysqldump 629
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 EXPLAIN 687
附录E锁的调试 703
附录F在MySQL上使用Sphinx 713
索引 739