|
Java电子书:高性能MySQL(第3版) 格式 pdf 电子书 PDF 电子书 Java吧 java8.com* v( L, J$ w/ z
" o, v! E7 n$ s. L
. Y' o1 D- s' t3 ^2 r2 _编号:mudaima-P0076【Java吧 java8.com】- t5 S) g2 r! i- B" r
* X( R' C, h8 B/ A! E9 n0 q
7 d5 r! f5 a# A; C* p
( M# A: _' k/ k+ ]3 FJava电子书目录:第1 章 MySQL 架构与历史 1
2 j9 j2 d4 O4 V6 x6 y. ~- k3 V1.1 MySQL 逻辑架构 1& d* B- k! m9 O8 u& O7 K% l
1.1.1 连接管理与安全性 2
) k8 P: S/ @1 C9 Q8 P1.1.2 优化与执行 3* v9 j& Q1 T3 Q+ d2 d4 P' J
1.2 并发控制 3
0 Q. X8 {1 G& x% E( x) L9 ~4 e1.2.1 读写锁 4- H8 @2 m+ ~' M, f
1.2.2 锁粒度 4
& ~" Z _1 x5 M( \5 ?1.3 事务 6
! I0 E& C: b0 [& ]3 K1 Y1.3.1 隔离级别 8; T" q# Q, X& J# ?1 c
1.3.2 死锁 9
0 p2 I$ o0 g$ a! a1.3.3 事务日志 10# |- ^4 F) B2 Y* g: t* f: ~6 e
1.3.4 MySQL 中的事务 10
# [$ X% i$ W; Q) L3 o: U5 s4 P3 k1.4 多版本并发控制 129 r: n. W& B$ I
1.5 MySQL 的存储引擎 13
/ m6 @& M! @' c B% P: \! T$ E3 f1.5.1 InnoDB 存储引擎 16
! L M% f" D+ [8 E) ]1.5.2 MyISAM 存储引擎 17: |& _6 E' M' r' _& `, I
1.5.3 MySQL 内建的其他存储引擎 19
/ T _% {0 S# \& l. V, T) @8 W! @1.5.4 第三方存储引擎 223 S! |3 H: u( P" |/ j
1.5.5 选择合适的引擎 242 t! u3 {. {! S' E. f4 G
1.5.6 转换表的引擎 27/ `# C" w, o/ H- L8 ~, [
1.6 MySQL 时间线(Timeline) 29
8 c, @( v! b T; \. `( E# A) V E1.7 MySQL 的开发模式 32+ r5 Z/ ]0 r5 _1 l; @- h9 M: b
1.8 总结 33$ ~+ O4 ]6 s) B2 g% ?
第2 章 MySQL 基准测试 356 k8 |+ w: o' a" j% |( x
2.1 为什么需要基准测试 35% G9 t% c3 i7 D2 k+ }/ {
2.2 基准测试的策略 37
3 k, P5 P2 ` R+ I2.2.1 测试何种指标 38/ K* y. X. P7 ~$ n/ O0 @, o! Z' w
2.3 基准测试方法 40 }3 q5 W ]; }0 L
2.3.1 设计和规划基准测试 41% A6 t. P; u, p9 `! @) N) }
2.3.2 基准测试应该运行多长时间 421 y+ y& s! W; h) q6 s! s
2.3.3 获取系统性能和状态 43
& P3 n$ A0 H8 d @- @+ e2.3.4 获得准确的测试结果 44
: d- C) y Q; K$ }% Y; h2.3.5 运行基准测试并分析结果 46; {! j$ P, u. e. a+ G5 I6 T
2.3.6 绘图的重要性 479 S2 W/ F$ o4 m
2.4 基准测试工具 49
4 Y6 k/ y& c: S2.4.1 集成式测试工具 491 K, L: Z: S @0 n. _7 F0 t3 S
2.4.2 单组件式测试工具 50
6 m. {+ T/ g4 l$ k" E2.5 基准测试案例 52' Z7 o- Z. U; X2 L# w; Y! |
2.5.1 http_load 53
4 R& f J% G. J$ Q! d2 \2.5.2 MySQL 基准测试套件 .54
# H8 X) V5 L2 \) }2.5.3 sysbench 55
2 R7 Q3 P/ y K0 |7 a. i2.5.4 数据库测试套件中的dbt2 TPC-C 测试 60
4 |# N- |- F9 q' F/ g5 v$ ?; \2.5.5 Percona 的TPCC-MySQL 测试工具 63
+ U8 X) Y( e$ d8 {+ H- q2.6 总结 65
; |3 q" M. b* f第3 章 服务器性能剖析 67
' W. w/ @& ~4 |" n) j3 b- q# S3.1 性能优化简介 67$ Y: Y8 Q8 c) J7 i3 x9 W
3.1.1 通过性能剖析进行优化 69
3 G8 V! [9 F/ K( Q2 L% L$ w3.1.2 理解性能剖析 71
0 @. f3 ~1 y( ~3.2 对应用程序进行性能剖析 72' u/ Z, Q( d6 m9 A# s; a+ S$ I/ b
3.2.1 测量PHP 应用程序 741 e4 C4 G J- ^0 Y$ ~( o
3.3 剖析MySQL 查询 77- ?5 F2 q( E0 H& o$ Z- ~! e
3.3.1 剖析服务器负载 77
/ t" w3 g: k* B1 x1 ~8 A/ {* l3.3.2 剖析单条查询 81
- {- {$ p$ c% K: p. }4 F3.3.3 使用性能剖析 87
# H) M( h- M2 B1 |3.4 诊断间歇性问题 88
( Z" X7 E3 y! Q' L7 @3.4.1 单条查询问题还是服务器问题 89
* w L8 d+ Z% F) { I8 `" A; c3.4.2 捕获诊断数据 93
% \4 I8 {% o# }9 b ]$ U5 M- M }3.4.3 一个诊断案例 98* D2 x- q) m- f# l8 ^ \. ?8 o* J
3.5 其他剖析工具 1067 ~4 E$ J0 Q; J( j
3.5.1 使用USER_STATISTICS 表 106, K9 U7 Z8 u; {
3.5.2 使用strace 107
1 O8 Z8 ?5 `3 c. D) u/ |/ J, g$ q% E3.6 总结 108# F" Z0 b; p: S, o# h6 i
第4 章 Schema 与数据类型优化 111
* A* u7 m( T: y: f0 L y+ H4.1 选择优化的数据类型 111; v6 b q7 ]6 j8 I* W! n
4.1.1 整数类型 113# ?8 C, |/ e6 ^9 I+ f! a4 E5 N
4.1.2 实数类型 1136 N* s" a1 z" j4 X
4.1.3 字符串类型 114/ ]/ N T: K# s4 G
4.1.4 日期和时间类型 121
2 G3 C b$ C/ u2 v! h" i4.1.5 位数据类型 123
- L2 }( a K3 `4 ^% }) L: B3 D4.1.6 选择标识符(identifier) 125
/ u% F$ I/ l' {9 q) Z: U4.1.7 特殊类型数据 127" d7 D( p% ]$ Q8 @6 _- I
4.2 MySQL schema 设计中的陷阱 1279 f: e$ b q7 R: Y6 r% n3 u
4.3 范式和反范式 129
' B8 k$ K6 R; T6 V# i4 h2 y4.3.1 范式的优点和缺点 1306 m' i2 q: a7 I
4.3.2 反范式的优点和缺点 . 130/ b" p3 Q& d% ], ?0 e, [
4.3.3 混用范式化和反范式化 131
% M+ z3 {+ N7 M9 D; A! H5 w4.4 缓存表和汇总表 132
x# W& F$ J" v6 O" e# C& _+ \! ?, ~4.4.1 物化视图 134
3 `. x' f7 U2 Z9 X4.4.2 计数器表 135; R% J. a8 p* D: m# j8 [1 s3 ~& H: C( Y
4.5 加快ALTER TABLE 操作的速度 136' E" u, r$ J1 G/ G- b& ?8 k
4.5.1 只修改.frm 文件 137/ X9 D$ `! s: e1 _; r4 A3 @+ T
4.5.2 快速创建MyISAM 索引 139: x7 u7 n4 a j) J" \, s- a* r
4.6 总结 140
+ u" i; U% [3 w4 g) a" K, @第5 章 创建高性能的索引 141% U# Z5 S2 d; S) r/ }: r7 D4 I
5.1 索引基础 141
' V/ d% [7 H% P. A# s/ h5.1.1 索引的类型 142/ h# }2 K8 o0 ^' K8 P$ f
5.2 索引的优点 152/ [$ ?" D, t1 e
5.3 高性能的索引策略 153
+ z- x, a7 N8 ]7 h% ^3 L& ~5.3.1 独立的列 153
( |+ _; [ ~: h7 J- Y5.3.2 前缀索引和索引选择性 153
1 P4 s, |9 G# b4 M0 w) v5.3.3 多列索引 157
! M, C N M* l5.3.4 选择合适的索引列顺序 1590 @% M5 g0 X9 N, z
5.3.5 聚簇索引 1623 w7 ^# T& D% d0 p% m
5.3.6 覆盖索引 171
8 ? }( v3 I2 V% E2 W5.3.7 使用索引扫描来做排序 175
3 ]6 k8 K7 t8 V8 Q5 o5.3.8 压缩(前缀压缩)索引 177
# `- q' `0 I( Y7 ?5.3.9 冗余和重复索引 178
6 _- B7 J; q4 y/ v* L6 }5.3.10 未使用的索引 181
3 \5 }# R) U# E5.3.11 索引和锁 181+ c0 J$ M1 R' w* N, ?( @. \* r
5.4 索引案例学习 183
. A& t- \1 { [8 N2 }5.4.1 支持多种过滤条件 183
V2 Q n b9 Q. a9 \& v0 a5.4.2 避免多个范围条件 1855 w. U* q8 t6 l% N7 ]" q; y, |. R
5.4.3 优化排序 186
* D& m" n% H* ^1 `5.5 维护索引和表 187
; H& ^! s: ~" i$ A" `2 ^( M+ r) I5.5.1 找到并修复损坏的表 . 187
% G9 V! F* D% q5 x& n4 T' C& j5.5.2 更新索引统计信息 188
) K; V9 [6 X% q. n5.5.3 减少索引和数据的碎片 190
" F7 A0 a: V( n4 K5.6 总结 1924 k3 Q7 e% @4 O! G" c
第6 章 查询性能优化 195
7 I W) M- Q) I5 E! M4 `) M9 V4 M6.1 为什么查询速度会慢 1955 `, p+ C J! c9 n
6.2 慢查询基础:优化数据访问 196% G# _( F; m4 F- c N( a9 @
6.2.1 是否向服务器请求了不需要的数据 196
9 ^0 @/ E+ r" g' Y! p5 m* b6.2.2 MySQL 是否在扫描额外的记录 1985 \" ?! k. F9 v
6.3 重构查询的方式 201! c* u1 {7 l- @% u9 y; x- _3 { H; C# i! M
6.3.1 一个复杂查询还是多个简单查询 201# E N$ E* J$ y6 ]5 d6 ^1 ?5 c4 F
6.3.2 切分查询 202# h8 w; G; A. A( Z& a
6.3.3 分解关联查询 203
7 w) h. Y5 O. D: `6 x6.4 查询执行的基础 204
2 E& n' p5 I# o6.4.1 MySQL 客户端/ 服务器通信协议 205: [) i% e& {8 T" V2 g
6.4.2 查询缓存 208
X/ Q: @$ d$ O- l6.4.3 查询优化处理 208
' y- [% N" h3 O6 g* U0 F! L" q6.4.4 查询执行引擎 222
3 o# F! b2 g+ n' Y6.4.5 返回结果给客户端 223
, X# y2 J1 _' Y! y' }! [6.5 MySQL 查询优化器的局限性 223
$ P7 Y x- i Z6.5.1 关联子查询 223( w/ H& L1 a% o0 I. \ x
6.5.2 UNION 的限制 228
( Y; Y1 \% n! e4 w$ P4 H6.5.3 索引合并优化 228
7 Y! t% ^7 a w% B7 x7 G6.5.4 等值传递 229
$ B( K! ]- a2 X) @: Z! ~$ h! G# ?6.5.5 并行执行 229: S; `6 L c( e9 V7 ]
6.5.6 哈希关联 229( g9 q+ a$ e, T( w! Y! E
6.5.7 松散索引扫描 229
2 M# {: v$ g0 q% U& b6.5.8 值和小值优化 . 2313 \ U4 R5 K6 \7 e
6.5.9 在同一个表上查询和更新 232' ]- J/ }* }4 D
6.6 查询优化器的提示(hint) 2327 N; @. q! B5 G4 ?
6.7 优化特定类型的查询 236
: S( G% \. q6 A1 _9 Y! i6.7.1 优化COUNT() 查询 2369 d. `/ O4 Y2 k# W2 f! B. `
6.7.2 优化关联查询 239( B) a/ @3 I2 A1 s' s
6.7.3 优化子查询 2392 ]8 Z: h2 ~" r1 _% T
6.7.4 优化GROUP BY 和DISTINCT 239
+ e8 n6 M* P$ @$ }6.7.5 优化LIMIT 分页 2416 m6 s6 M) }3 m+ K0 [' K4 q) X
6.7.6 优化SQL_CALC_FOUND_ROWS 243* L$ B6 C7 {4 M0 O$ o+ n
6.7.7 优化UNION 查询 243
: s+ V% `) |6 m0 L6.7.8 静态查询分析 244
7 t; ~1 m; P. P+ z5 g E" U6.7.9 使用用户自定义变量 . 244
( r% D5 ^# V5 g* Z! n, o6.8 案例学习 251
! ? D' ^5 b- W! e6.8.1 使用MySQL 构建一个队列表 251
/ @( _7 J3 o9 S9 n/ v+ S6.8.2 计算两点之间的距离 . 254$ g( h1 g9 e( j+ [
6.8.3 使用用户自定义函数 . 257& f4 ]9 O% @/ G
6.9 总结 2588 V! c2 a; o0 j
第7 章 MySQL 高级特性 2593 g" N; l8 w+ i
7.1 分区表 259
6 S' r- |4 n8 Q; G; T3 r: p7.1.1 分区表的原理 260. u- \7 Z" t: m8 y. S6 G6 L! F
7.1.2 分区表的类型 261+ i; t3 v# l" Q& ]" {% F
7.1.3 如何使用分区表 262. d: ^4 `% ?1 a* k5 z! _
7.1.4 什么情况下会出问题 . 263/ n! l4 h- V. u9 g. Y
7.1.5 查询优化 266% T+ W5 b- ^' [/ J
7.1.6 合并表 267$ `& u! t! L# p- `! g
7.2 视图 270
1 N4 R; ~; F. j# ~4 }. a7.2.1 可更新视图 272
. Y, }" S/ r$ C/ w8 ]7.2.2 视图对性能的影响 273) J" U5 [$ Q1 w, w/ c J. E
7.2.3 视图的限制 274
: U. [3 d. P5 U! ^$ n1 { P7.3 外键约束 275' o" b& Z1 F, L9 i1 [
7.4 在MySQL 内部存储代码 276
1 Z0 U. Q* m4 ^: N2 q" u |+ M7.4.1 存储过程和函数 278
# |$ q- R/ |% j3 i$ c7.4.2 触发器 279
; A9 v; F3 W0 z* C% N y7.4.3 事件 281
3 z; Q1 C" r! i, l: W' I: X2 e7.4.4 在存储程序中保留注释 283
5 v* K) e6 c/ t8 D$ y8 _$ V' d7.5 游标 283) y' o8 l! J! B# s
7.6 绑定变量 284; M9 f& i5 [5 w3 N5 Z
7.6.1 绑定变量的优化 2869 G. m2 P; u/ p1 T" T# A
7.6.2 SQL 接口的绑定变量 286
2 C# W$ ?& e$ @7.6.3 绑定变量的限制 288
8 N* X/ V% ]8 ^# Q8 K7.7 用户自定义函数 2898 c, A( ^/ C5 {6 _& Q$ F
7.8 插件 290! c) ^. f" v, K i/ W' b
7.9 字符集和校对 291
7 `( I( B7 J6 N3 x+ c" t9 }6 x7.9.1 MySQL 如何使用字符集 2920 u/ y, L, \! x3 J c' q0 D
7.9.2 选择字符集和校对规则 295
! V0 V( j2 x& A x' }6 U7.9.3 字符集和校对规则如何影响查询 296
* _& z! k# `3 }7.10 全文索引 299
0 f9 Z. G+ U; r7.10.1 自然语言的全文索引 300
4 O: f$ Q0 c+ _" [1 H4 _7.10.2 布尔全文索引 302
# Z1 d! z" {9 `7.10.3 MySQL5.1 中全文索引的变化 303
* X1 d) M& n$ n1 `7.10.4 全文索引的限制和替代方案 304
+ a& E3 _! h" L2 _ ?5 h K% R7.10.5 全文索引的配置和优化 306# t4 c4 m2 D4 }/ t- E( U
7.11 分布式(XA)事务 307
! A6 W: x& E# _7.11.1 内部XA 事务 307
# M: |0 t, @8 [ G7.11.2 外部XA 事务 308
' j8 V3 L, o- u9 z! v1 V. b, j7.12 查询缓存 309
: a z! M! R& G8 ~& ^( b$ f7.12.1 MySQL 如何判断缓存命中 3099 t9 N4 q; @( |
7.12.2 查询缓存如何使用内存 311
- g. D6 t. F5 V4 n7.12.3 什么情况下查询缓存能发挥作用 313
; Q' N5 P8 z D6 r" q4 V7.12.4 如何配置和维护查询缓存 316
2 Y% j5 @/ B8 G( ]7.12.5 InnoDB 和查询缓存 . 319
- B* @+ z2 C) R7.12.6 通用查询缓存优化 3207 q! O/ ~8 a: y) r' Q: d. t
7.12.7 查询缓存的替代方案 321
1 C5 V' N: E) S) D0 a$ V! w" Q7.13 总结 321+ B0 @4 e4 T; _( Y
第8 章 优化服务器设置 325
6 c1 _# A1 C8 C( O" S- a8.1 MySQL 配置的工作原理 326
. A8 x' v# m% l6 |" Q: M5 a8.1.1 语法、作用域和动态性 327
: A" k/ q0 V o: [2 a$ @8.1.2 设置变量的副作用 3287 [' ]0 r: x& _" H; Z
8.1.3 入门 331
" a- i! \% T, ?4 D8.1.4 通过基准测试迭代优化 3325 |0 ~' d+ u! H9 e
8.2 什么不该做 333
: P% G L2 X3 Y. e8.3 创建MySQL 配置文件 335
1 l. f4 O: k/ X4 Z" D @/ l) b8.3.1 检查MySQL 服务器状态变量 339
) Q G9 l" ?7 X: W$ v8.4 配置内存使用 340
& F. V( l/ q# y8.4.1 MySQL 可以使用多少内存? 340
! a: v5 N7 x3 o, o' `/ y9 `8.4.2 每个连接需要的内存 . 341
7 I+ Q4 i" i. k" U8.4.3 为操作系统保留内存 . 3411 w2 Q% ~ J6 X Q) X k8 @
8.4.4 为缓存分配内存 3424 S- Q! ?) X! b8 ? X; Z
8.4.5 InnoDB 缓冲池(Buffer Pool) 3423 q" [8 U9 r* G/ p' S0 _9 v4 A! s
8.4.6 MyISAM 键缓存(Key Caches) 344
" y/ ?7 X9 W& K6 Z) `8.4.7 线程缓存 346
( a; d( V2 f- S1 p( w/ } d6 g8 u8.4.8 表缓存(Table Cache) 347
7 C( D# o# n$ X4 g* X* i8.4.9 InnoDB 数据字典(Data Dictionary) 348
/ q2 t' u, u3 a" Q9 g: ~8.5 配置MySQL 的I/O 行为 349
1 K; v# o4 {5 `1 m8.5.1 InnoDB I/O 配置 3490 ?+ m% C& N# O1 A# N5 E- i% K
8.5.2 MyISAM 的I/O 配置 . 361/ o0 @+ |7 \6 d8 D3 W. G* b
8.6 配置MySQL 并发 . 363
. C. f; U4 [4 p" I9 P$ c8.6.1 InnoDB 并发配置 364! z2 J' f" }3 H+ F5 Z! y! `3 x
8.6.2 MyISAM 并发配置 3656 F4 u$ f% N2 ` ?2 A; ~# E
8.7 基于工作负载的配置 366- e8 V( Y! l% L0 G* ?( f9 I- M: G
8.7.1 优化BLOB 和TEXT 的场景 367 H& g7 A% I+ i5 V+ b. t
8.7.2 优化排序(Filesorts). 368
" z. W* S0 K) j( G& f) C8.8 完成基本配置 369
; M, f2 ]: ^& ~8.9 安全和稳定的设置 3716 s) g" o# M2 ]% `5 X: t" M- a
8.10 高级InnoDB 设置 374- b1 R9 n3 S6 y x" |
8.11 总结 376" r0 F% w0 M6 _+ ^$ j
第9 章 操作系统和硬件优化 377, ^4 i \1 B" H, l
9.1 什么限制了MySQL 的性能 377# {9 d7 E$ }& i( x1 x: G
9.2 如何为MySQL 选择CPU 378
) P$ L; P8 Z/ R8 L+ Z9.2.1 哪个更好:更快的CPU 还是更多的CPU 3789 L3 q) m$ d5 G5 T! I) ~* Y
9.2.2 CPU 架构 380
# c( S9 V, i p+ U9.2.3 扩展到多个CPU 和核心 3810 ^7 g9 ]. k( F9 U3 R! t$ x6 `+ J
9.3 平衡内存和磁盘资源 382
& w& _/ a% ~$ g* k7 k$ `% K9.3.1 随机I/O 和顺序I/O 383/ k* ]/ D0 J) J
9.3.2 缓存,读和写 384
% s+ ~3 a! d3 _; u- o, b9.3.3 工作集是什么 385
! a1 _% S: M; G, K; Z; P9.3.4 找到有效的内存/ 磁盘比例 386
0 w) a9 W; y, L! j4 e' T5 a9.3.5 选择硬盘 387
% W" Y' I) {2 l L9.4 固态存储 389# J$ Y& L9 J7 n: |. v
9.4.1 闪存概述 3907 L+ o6 ]' z" X4 V8 c0 Z
9.4.2 闪存技术 391
) N) w! M* d0 u9.4.3 闪存的基准测试 392
; q" `, {6 J1 x; a! Z& R$ u! T* q9.4.4 固态硬盘驱动器(SSD) 393
- O3 O* @4 b# G y5 L1 W' r9.4.5 PCIe 存储设备 395
, B: C% g$ Z8 }" U" Q: w* r9.4.6 其他类型的固态存储 . 396
( j5 e4 N8 M/ L" h% o1 W9.4.7 什么时候应该使用闪存 3965 F, h% N; ^' ?# J
9.4.8 使用Flashcache 397
- s/ `) P, a- x0 Z! C8 u# B9.4.9 优化固态存储上的MySQL 399$ M3 e5 \! H& s. t: M9 g# y( y
9.5 为备库选择硬件 402
0 U- }) @+ C8 R/ n V" D9.6 RAID 性能优化 403
% ]; g* b' S3 Z: J* p5 n- h1 `9.6.1 RAID 的故障转移、恢复和镜像 405
$ @' W4 T% x8 G& {3 \0 _5 S9.6.2 平衡硬件RAID 和软件RAID 406
( K: D w% ]5 l s3 X6 A+ h9.6.3 RAID 配置和缓存 407
3 S- B& y8 e9 t. _9.7 SAN 和NAS 410
: J* R" k! Z9 p" B4 K; `1 D9 R9.7.1 SAN 基准测试 411
$ h4 u; a- g7 f# p0 w
# L4 @9 y. K8 _+ z1 x; T1 I: V百度云盘下载地址(完全免费-绝无套路): F( g, m. Q9 C7 \1 M3 M3 c
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|