0%

高性能mysql第三版PDF下载

《高性能mysql第三版》

链接: https://pan.baidu.com/s/1LNq9hI-Of7ogAidF1r3mqA 提取码: imjb

  《高性能MySQL(第3版)》是MySQL 领域的经典之作,拥有广泛的影响力。第3 版更新了大量的内容,不但涵盖了MySQL5.5版本的新特性,也讲述了关于固态盘、高可扩展性设计和云计算环境下的数据库相关的新内容,原有的基准测试和性能优化部分也做了大量的扩展和补充。全书共分为16章和6 个附录,内容涵盖MySQL架构和历史,基准测试和性能剖析,数据库软硬件性能优化,复制、备份和恢复,高可用与高可扩展性,以及云端的MySQL和MySQL相关工具等方面的内容。每一章都是相对独立的主题,读者可以有选择性地单独阅读。

  《高性能MySQL(第3版)》不但适合数据库管理员(DBA)阅读,也适合开发人员参考学习。不管是数据库新手还是专家,相信都能从本书有所收获。

 每一章均别具匠心,力求理论与实践的精确平衡,且布满无价之宝,有时甚至越过MySQL舞台,完全适用于任一数据库。其中第二章“MySQL基准测试”及第3章“服务器性能剖析”是非常必要的基础,推荐提前阅读。

  纵观全书,作者推荐的工具、实战案例及经验过的诊断技术,可大大提高你的性能急救技能,以及加深对MySQL本质的理解。然而,本书值得推崇的,还是其在探讨性能的同时,将数据库结构的客观方面纳入思考,这是其他书里难以看到的。此外,增补的MySQL高可用性及云特性,也让人更加欣喜。

  相信不少人会因为找不到某些书中引用的资料或工具而苦恼,但从本书中按图索骥,会发现这些东西正是作者对MySQL社区的杰出贡献,也就是说,你可以直接用这些工具!

  很多年前我就是这本书的“粉丝”了,这是一本伟大的书,第三版尤其如此。这些世界*的专家不仅仅分享他们的专业知识,也花了很多时间来更新和添加新的章节,且都是高品质的内容。本书有大量关于如何获得MySQL高性能的细节信息,并且关注的是提升性能的过程,而不仅仅是描述事实结果和琐碎的细枝末节。这本书将告诉读者如何将事情做得更好,不管MySQL在不同版本中的行为有多么大的改变。

  毫无疑问,本书的作者是有资格来写这么一本书的人,他们经验丰富,有合理的方法,关注效率,并且精益求精。说到经验丰富,本书的作者已经在MySQL性能领域工作多年,从MySQL还没有什么可扩展性和可测量性的时代,直到现在这些方面已经有了长足的进步。而说到合理的方法,他们简直把这件事情当成了科学,首先定义需要解决的问题,然后通过合理的猜测和精确的测量来解决问题。

  我对作者在效率方面的关注尤其印象深刻。作为顾问,他们时间宝贵。客户是按照他们的时间付费的,所以都希望能更快地解决问题。所以本书作者定义了一整套的流程,开发了很多的工具,让事情变得正确和高效。在本书中,作者详细描述了这些流程,并且发布了工具的源代码。

  最后,本书作者在工作上一直精益求精。比如从吞吐量到响应时间的关注,致力于了解MySQL在新硬件上的性能表现,追求新的技能如排队理论对性能的影响,等等。我相信本书预示了MySQL的光明前景。MySQL已经支持高要求的工作负载,本书作者也在努力提升MySQL社区内对性能的认识。同时,他们还直接为性能提升做出了贡献,包括XtraDB和XtraBackup。一直以来我从他们身上学到了不少东西,也希望读者多花点时间读读本书,一定会同样有所收益。

  ——MarkCallaghan,Facebook软件工程师

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885

目录

推荐序

前言

第1章 MySQL 架构与历史

1.1 MySQL 逻辑架构

1.1.1 连接管理与安全性

1.1.2 优化与执行

1.2 并发控制

1.2.1 读写锁

1.2.2 锁粒度

1.3 事务

1.3.1 隔离级别

1.3.2 死锁

1.3.3 事务日志

1.3.4 MySQL 中的事务

1.4 多版本并发控制

1.5 MySQL 的存储引擎

1.5.1 InnoDB 存储引擎

1.5.2 MyISAM 存储引擎

1.5.3 MySQL 内建的其他存储引擎

1.5.4 第三方存储引擎

1.5.5 选择合适的引擎

1.5.6 转换表的引擎

1.6 MySQL 时间线(Timeline)

1.7 MySQL 的开发模式

1.8 总结

第2章 MySQL 基准测试

2.1 为什么需要基准测试

2.2 基准测试的策略

2.2.1 测试何种指标

2.3 基准测试方法

2.3.1 设计和规划基准测试

2.3.2 基准测试应该运行多长时间

2.3.3 获取系统性能和状态

2.3.4 获得准确的测试结果

2.3.5 运行基准测试并分析结果

2.3.6 绘图的重要性

2.4 基准测试工具

2.4.1 集成式测试工具

2.4.2 单组件式测试工具

2.5 基准测试案例

2.5.1 http_load

2.5.2 MySQL 基准测试套件 .

2.5.3 sysbench

2.5.4 数据库测试套件中的dbt2 TPC-C 测试

2.5.5 Percona 的TPCC-MySQL 测试工具

2.6 总结

第3章 服务器性能剖析

3.1 性能优化简介

3.1.1 通过性能剖析进行优化

3.1.2 理解性能剖析

3.2 对应用程序进行性能剖析

3.2.1 测量PHP 应用程序

3.3 剖析MySQL 查询

3.3.1 剖析服务器负载

3.3.2 剖析单条查询

3.3.3 使用性能剖析

3.4 诊断间歇性问题

3.4.1 单条查询问题还是服务器问题

3.4.2 捕获诊断数据

3.4.3 一个诊断案例

3.5 其他剖析工具

3.5.1 使用USER_STATISTICS 表

3.5.2 使用strace

3.6 总结

第4章 Schema 与数据类型优化

4.1 选择优化的数据类型

4.1.1 整数类型

4.1.2 实数类型

4.1.3 字符串类型

4.1.4 日期和时间类型

4.1.5 位数据类型

4.1.6 选择标识符(identifier)

4.1.7 特殊类型数据

4.2 MySQL schema 设计中的陷阱

4.3 范式和反范式

4.3.1 范式的优点和缺点

4.3.2 反范式的优点和缺点 .

4.3.3 混用范式化和反范式化

4.4 缓存表和汇总表

4.4.1 物化视图

4.4.2 计数器表

4.5 加快ALTER TABLE 操作的速度

4.5.1 只修改.frm 文件

4.5.2 快速创建MyISAM 索引

4.6 总结

第5章 创建高性能的索引

5.1 索引基础

5.1.1 索引的类型

5.2 索引的优点

5.3 高性能的索引策略

5.3.1 独立的列

5.3.2 前缀索引和索引选择性

5.3.3 多列索引

5.3.4 选择合适的索引列顺序

5.3.5 聚簇索引

5.3.6 覆盖索引

5.3.7 使用索引扫描来做排序

5.3.8 压缩(前缀压缩)索引

5.3.9 冗余和重复索引

5.3.10 未使用的索引

5.3.11 索引和锁

5.4 索引案例学习

5.4.1 支持多种过滤条件

5.4.2 避免多个范围条件

5.4.3 优化排序

5.5 维护索引和表

5.5.1 找到并修复损坏的表 .

5.5.2 更新索引统计信息

5.5.3 减少索引和数据的碎片

5.6 总结

第6章 查询性能优化

6.1 为什么查询速度会慢

6.2 慢查询基础:优化数据访问

6.2.1 是否向服务器请求了不需要的数据

6.2.2 MySQL 是否在扫描额外的记录

6.3 重构查询的方式

6.3.1 一个复杂查询还是多个简单查询

6.3.2 切分查询

6.3.3 分解关联查询

6.4 查询执行的基础

6.4.1 MySQL 客户端/ 服务器通信协议

6.4.2 查询缓存

6.4.3 查询优化处理

6.4.4 查询执行引擎

6.4.5 返回结果给客户端

6.5 MySQL 查询优化器的局限性

6.5.1 关联子查询

6.5.2 UNION 的限制

6.5.3 索引合并优化

6.5.4 等值传递

6.5.5 并行执行

6.5.6 哈希关联

6.5.7 松散索引扫描

6.5.8 最大值和最小值优化 .

6.5.9 在同一个表上查询和更新

6.6 查询优化器的提示(hint)

6.7 优化特定类型的查询

6.7.1 优化COUNT() 查询

6.7.2 优化关联查询

6.7.3 优化子查询

6.7.4 优化GROUP BY 和DISTINCT

6.7.5 优化LIMIT 分页

6.7.6 优化SQL_CALC_FOUND_ROWS

6.7.7 优化UNION 查询

6.7.8 静态查询分析

6.7.9 使用用户自定义变量 .

6.8 案例学习

6.8.1 使用MySQL 构建一个队列表

6.8.2 计算两点之间的距离 .

6.8.3 使用用户自定义函数 .

6.9 总结

第7章 MySQL 高级特性

7.1 分区表

7.1.1 分区表的原理

7.1.2 分区表的类型

7.1.3 如何使用分区表

7.1.4 什么情况下会出问题 .

7.1.5 查询优化

7.1.6 合并表

7.2 视图

7.2.1 可更新视图

7.2.2 视图对性能的影响

7.2.3 视图的限制

7.3 外键约束

7.4 在MySQL 内部存储代码

7.4.1 存储过程和函数

7.4.2 触发器

7.4.3 事件

7.4.4 在存储程序中保留注释

7.5 游标

7.6 绑定变量

7.6.1 绑定变量的优化

7.6.2 SQL 接口的绑定变量

7.6.3 绑定变量的限制

7.7 用户自定义函数

7.8 插件

7.9 字符集和校对

7.9.1 MySQL 如何使用字符集

7.9.2 选择字符集和校对规则

7.9.3 字符集和校对规则如何影响查询

7.10 全文索引

7.10.1 自然语言的全文索引

7.10.2 布尔全文索引

7.10.3 MySQL5.1 中全文索引的变化

7.10.4 全文索引的限制和替代方案

7.10.5 全文索引的配置和优化

7.11 分布式(XA)事务

7.11.1 内部XA 事务

7.11.2 外部XA 事务

7.12 查询缓存

7.12.1 MySQL 如何判断缓存命中

7.12.2 查询缓存如何使用内存

7.12.3 什么情况下查询缓存能发挥作用

7.12.4 如何配置和维护查询缓存

7.12.5 InnoDB 和查询缓存 .

7.12.6 通用查询缓存优化

7.12.7 查询缓存的替代方案

7.13 总结

第8章 优化服务器设置

8.1 MySQL 配置的工作原理

8.1.1 语法、作用域和动态性

8.1.2 设置变量的副作用

8.1.3 入门

8.1.4 通过基准测试迭代优化

8.2 什么不该做

8.3 创建MySQL 配置文件

8.3.1 检查MySQL 服务器状态变量

8.4 配置内存使用

8.4.1 MySQL 可以使用多少内存?

8.4.2 每个连接需要的内存 .

8.4.3 为操作系统保留内存 .

8.4.4 为缓存分配内存

8.4.5 InnoDB 缓冲池(Buffer Pool)

8.4.6 MyISAM 键缓存(Key Caches)

8.4.7 线程缓存

8.4.8 表缓存(Table Cache)

8.4.9 InnoDB 数据字典(Data Dictionary)

8.5 配置MySQL 的I/O 行为

8.5.1 InnoDB I/O 配置

8.5.2 MyISAM 的I/O 配置 .

8.6 配置MySQL 并发 .

8.6.1 InnoDB 并发配置

8.6.2 MyISAM 并发配置

8.7 基于工作负载的配置

8.7.1 优化BLOB 和TEXT 的场景

8.7.2 优化排序(Filesorts).

8.8 完成基本配置

8.9 安全和稳定的设置

8.10 高级InnoDB 设置

8.11 总结

第9章 操作系统和硬件优化

9.1 什么限制了MySQL 的性能

9.2 如何为MySQL 选择CPU

9.2.1 哪个更好:更快的CPU 还是更多的CPU

9.2.2 CPU 架构

9.2.3 扩展到多个CPU 和核心

9.3 平衡内存和磁盘资源

9.3.1 随机I/O 和顺序I/O

9.3.2 缓存,读和写

9.3.3 工作集是什么

9.3.4 找到有效的内存/ 磁盘比例

9.3.5 选择硬盘

9.4 固态存储

9.4.1 闪存概述

9.4.2 闪存技术

9.4.3 闪存的基准测试

9.4.4 固态硬盘驱动器(SSD)

9.4.5 PCIe 存储设备

9.4.6 其他类型的固态存储 .

9.4.7 什么时候应该使用闪存

9.4.8 使用Flashcache

9.4.9 优化固态存储上的MySQL

9.5 为备库选择硬件

9.6 RAID 性能优化

9.6.1 RAID 的故障转移、恢复和镜像

9.6.2 平衡硬件RAID 和软件RAID

9.6.3 RAID 配置和缓存

9.7 SAN 和NAS

9.7.1 SAN 基准测试

9.7.2 使用基于NFS 或SMB 的SAN

9.7.3 MySQL 在SAN 上的性能

9.7.4 应该用SAN 吗

9.8 使用多磁盘卷

9.9 网络配置

9.10 选择操作系统

9.11 选择文件系统

9.12 选择磁盘队列调度策略

9.13 线程

9.14 内存交换区

9.15 操作系统状态

9.15.1 如何阅读vmstat 的输出

9.15.2 如何阅读iostat 的输出

9.15.3 其他有用的工具

9.15.4 CPU 密集型的机器

9.15.5 I/O 密集型的机器

9.15.6 发生内存交换的机器

9.15.7 空闲的机器

9.16 总结

第10章 复制

10.1 复制概述

10.1.1 复制解决的问题

10.1.2 复制如何工作

10.2 配置复制

10.2.1 创建复制账号

10.2.2 配置主库和备库

10.2.3 启动复制

10.2.4 从另一个服务器开始复制

10.2.5 推荐的复制配置

10.3 复制的原理

10.3.1 基于语句的复制

10.3.2 基于行的复制

10.3.3 基于行或基于语句:哪种更优

10.3.4 复制文件

10.3.5 发送复制事件到其他备库

10.3.6 复制过滤器

10.4 复制拓扑

10.4.1 一主库多备库

10.4.2 主动- 主动模式下的主- 主复制

10.4.3 主动- 被动模式下的主- 主复制

10.4.4 拥有备库的主- 主结构

10.4.5 环形复制

10.4.6 主库、分发主库以及备库

10.4.7 树或金字塔形

10.4.8 定制的复制方案

10.5 复制和容量规划

10.5.1 为什么复制无法扩展写操作

10.5.2 备库什么时候开始延迟

10.5.3 规划冗余容量

10.6 复制管理和维护

10.6.1 监控复制

10.6.2 测量备库延迟

10.6.3 确定主备是否一致

10.6.4 从主库重新同步备库

10.6.5 改变主库

10.6.6 在一个主- 主配置中交换角色

10.7 复制的问题和解决方案

10.7.1 数据损坏或丢失的错误

10.7.2 使用非事务型表

10.7.3 混合事务型和非事务型表

10.7.4 不确定语句

10.7.5 主库和备库使用不同的存储引擎

10.7.6 备库发生数据改变

10.7.7 不唯一的服务器ID .

10.7.8 未定义的服务器ID .

10.7.9 对未复制数据的依赖性

10.7.10 丢失的临时表

10.7.11 不复制所有的更新 .

10.7.12 InnoDB 加锁读引起的锁争用

10.7.13 在主- 主复制结构中写入两台主库

10.7.14 过大的复制延迟

10.7.15 来自主库的过大的包

10.7.16 受限制的复制带宽 .

10.7.17 磁盘空间不足

10.7.18 复制的局限性

10.8 复制有多快

10.9 MySQL 复制的高级特性

10.10 其他复制技术

10.11 总结

第11章 可扩展的MySQL

11.1 什么是可扩展性

11.1.1 正式的可扩展性定义

11.2 扩展MySQL

11.2.1 规划可扩展性

11.2.2 为扩展赢得时间

11.2.3 向上扩展

11.2.4 向外扩展

11.2.5 通过多实例扩展

11.2.6 通过集群扩展

11.2.7 向内扩展

11.3 负载均衡

11.3.1 直接连接

11.3.2 引入中间件

11.3.3 一主多备间的负载均衡

11.4 总结

第12章 高可用性

12.1 什么是高可用性

12.2 导致宕机的原因

12.3 如何实现高可用性

12.3.1 提升平均失效时间(MTBF)

12.3.2 降低平均恢复时间(MTTR)

12.4 避免单点失效

12.4.1 共享存储或磁盘复制

12.4.2 MySQL 同步复制

12.4.3 基于复制的冗余

12.5 故障转移和故障恢复

12.5.1 提升备库或切换角色

12.5.2 虚拟IP 地址或IP 接管

12.5.3 中间件解决方案

12.5.4 在应用中处理故障转移

12.6 总结

第13章 云端的MySQL

13.1 云的优点、缺点和相关误解

13.2 MySQL 在云端的经济价值

13.3 云中的MySQL 的可扩展性和高可用性

13.4 四种基础资源

13.5 MySQL 在云主机上的性能

13.5.1 在云端的MySQL 基准测试

13.6 MySQL 数据库即服务(DBaaS)

13.6.1 Amazon RDS

13.6.2 其他DBaaS 解决方案

13.7 总结

第14章 应用层优化

14.1 常见问题

14.2 Web 服务器问题

14.2.1 寻找最优并发度

14.3 缓存

14.3.1 应用层以下的缓存

14.3.2 应用层缓存

14.3.3 缓存控制策略

14.3.4 缓存对象分层

14.3.5 预生成内容

14.3.6 作为基础组件的缓存

14.3.7 使用HandlerSocket 和memcached

14.4 拓展MySQL

14.5 MySQL 的替代品

14.6 总结

第15章 备份与恢复

15.1 为什么要备份

15.2 定义恢复需求

15.3 设计MySQL 备份方案

15.3.1 在线备份还是离线备份

15.3.2 逻辑备份还是物理备份

15.3.3 备份什么

15.3.4 存储引擎和一致性

15.4 管理和备份二进制日志

15.4.1 二进制日志格式

15.4.2 安全地清除老的二进制日志

15.5 备份数据

15.5.1 生成逻辑备份

15.5.2 文件系统快照

15.6 从备份中恢复

15.6.1 恢复物理备份

15.6.2 还原逻辑备份

15.6.3 基于时间点的恢复

15.6.4 更高级的恢复技术

15.6.5 InnoDB 崩溃恢复

15.7 备份和恢复工具

15.7.1 MySQL Enterprise Backup

15.7.2 Percona XtraBackup .

15.7.3 mylvmbackup

15.7.4 Zmanda Recovery Manager

15.7.5 mydumper

15.7.6 mysqldump.

15.8 备份脚本化

15.9 总结

第16章 MySQL 用户工具

16.1 接口工具

16.2 命令行工具集

16.3 SQL 实用集

16.4 监测工具

16.4.1 开源的监控工具

16.4.2 商业监控系统

16.4.3 Innotop 的命令行监控

16.5 总结

附录A MySQL 分支与变种

附录B MySQL 服务器状态

附录C 大文件传输

附录D EXPLAIN

附录E 锁的调试

附录F 在MySQL 上使用Sphinx

索引


最后,这里为大家准备了几百本的互联网电子书,有需要的过来取吧。点击获取

本页书籍均来自网络,如有侵权,请联系我立即删除。我的邮箱:yaojianguolq@163.com

------ 全文结束------