高性能mysql第3版是mysql領域的經(jīng)典之作,由baron scbwartz、peter zaitsev、vadim tkacbenko著作,寧海元、周振、彭立勛、翟衛(wèi)祥等翻譯。第3版更新了大量的內(nèi)容,不但涵蓋了最新mysql5.5版本的新特性,也講述了關于固態(tài)盤、高可擴展性設計和云計算環(huán)境下的數(shù)據(jù)庫相關的新內(nèi)容,原有的基準測試和性能優(yōu)化部分也做了大量的擴展和補充。全書共分為16 章和6 個附錄,內(nèi)容涵蓋mysql架構和歷史,基準測試和性能剖析,數(shù)據(jù)庫軟硬件性能優(yōu)化,復制、備份和恢復,高可用與高可擴展性,以及云端的mysql和mysql相關工具等方面的內(nèi)容。每一章都是相對獨立的主題,讀者可以有選擇性地單獨閱讀。
此外,高性能mysql第3版不但適合數(shù)據(jù)庫管理員(dba)閱讀,也適合開發(fā)人員參考學習。不管是數(shù)據(jù)庫新手還是專家,相信都能從本書有所收獲。
作者簡介
Baron Schwartz 是一位軟件工程師,居住在弗吉尼亞州的Charlottesville,網(wǎng)絡常用名是Xaprb,這是按照QWERTY 鍵盤的順序在Dvorak 鍵盤上打出來的名字。在不忙于解決有趣的編程挑戰(zhàn)時,Baron 會和他的妻子Lynn 以及小狗Carbon 一起享受閑暇的時光。他有一個軟件工程方面的博客,地址是http://www.xaprb.com/blog/
Peter Zaitsev 曾經(jīng)是MySQL AB 公司高性能組的經(jīng)理,目前在運作mysqlperformance
blog.com 網(wǎng)站。他擅長于幫助那些每天有數(shù)以百萬計訪問量的網(wǎng)站的管理員解決問題,這些網(wǎng)站通常需要幾百臺機器來處理TB 級的數(shù)據(jù)。他常常為了解決一個問題而不停地升級硬件和軟件(比如查詢優(yōu)化)。Peter 還經(jīng)常在各種會議上演講。
Vadim Tkachenko 曾經(jīng)是MySQL AB 公司的性能工程師。作為一名在多線程編程和同步方面的專家,他的主要工作是基準測試、性能剖析,以及找出系統(tǒng)的性能瓶頸。他還在性能監(jiān)控和調(diào)優(yōu)方面做了一些工作,使得MySQL 在多核機器上有更好的可擴展性。</p
高性能mysql第3版pdf目錄
第1 章 mysql 架構與歷史 1
1.1 mysql 邏輯架構 1
1.1.1 連接管理與安全性2
1.1.2 優(yōu)化與執(zhí)行 3
1.2 并發(fā)控制 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 多版本并發(fā)控制 12
1.5 mysql 的存儲引擎 13
1.5.1 innodb 存儲引擎 16
1.5.2 myisam 存儲引擎 17
1.5.3 mysql 內(nèi)建的其他存儲引擎 19
.1.5.4 第三方存儲引擎 22
1.5.5 選擇合適的引擎 24
1.5.6 轉換表的引擎 27
1.6 mysql 時間線(timeline) 29
1.7 mysql 的開發(fā)模式 32
1.8 總結 33
第2 章 mysql 基準測試 35
2.1 為什么需要基準測試 35
2.2 基準測試的策略 37
2.2.1 測試何種指標 38
2.3 基準測試方法 40
2.3.1 設計和規(guī)劃基準測試 41
2.3.2 基準測試應該運行多長時間 42
2.3.3 獲取系統(tǒng)性能和狀態(tài) 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 數(shù)據(jù)庫測試套件中的dbt2 tpc-c 測試 60
2.5.5 percona 的tpcc-mysql 測試工具 63
2.6 總結 65
第3 章 服務器性能剖析 67
3.1 性能優(yōu)化簡介 67
3.1.1 通過性能剖析進行優(yōu)化 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 捕獲診斷數(shù)據(jù) 93
3.4.3 一個診斷案例 98
3.5 其他剖析工具 106
3.5.1 使用user_statistics 表 106
3.5.2 使用strace 107
3.6 總結 108
第4 章 schema 與數(shù)據(jù)類型優(yōu)化 111
4.1 選擇優(yōu)化的數(shù)據(jù)類型 111
4.1.1 整數(shù)類型 113
4.1.2 實數(shù)類型 113
4.1.3 字符串類型 114
4.1.4 日期和時間類型 121
4.1.5 位數(shù)據(jù)類型 123
4.1.6 選擇標識符(identifier) 125
4.1.7 特殊類型數(shù)據(jù) 127
4.2 mysql schema 設計中的陷阱 127
4.3 范式和反范式 129
4.3.1 范式的優(yōu)點和缺點 130
4.3.2 反范式的優(yōu)點和缺點 130
4.3.3 混用范式化和反范式化 131
4.4 緩存表和匯總表 132
4.4.1 物化視圖 134
4.4.2 計數(shù)器表 135
4.5 加快alter table 操作的速度 136
4.5.1 只修改.frm 文件 137
4.5.2 快速創(chuàng)建myisam 索引 139
4.6 總結 140
第5 章 創(chuàng)建高性能的索引 141
5.1 索引基礎 141
5.1.1 索引的類型 142
5.2 索引的優(yōu)點 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 優(yōu)化排序 186
5.5 維護索引和表 187
5.5.1 找到并修復損壞的表 187
5.5.2 更新索引統(tǒng)計信息 188
5.5.3 減少索引和數(shù)據(jù)的碎片 190
5.6 總結 192
第6 章 查詢性能優(yōu)化 195
6.1 為什么查詢速度會慢 195
6.2 慢查詢基礎:優(yōu)化數(shù)據(jù)訪問 196
6.2.1 是否向數(shù)據(jù)庫請求了不需要的數(shù)據(jù) 196
6.2.2 mysql 是否在掃描額外的記錄 198
6.3 重構查詢的方式 201
6.3.1 一個復雜查詢還是多個簡單查詢 201
6.3.2 切分查詢 202
6.3.3 分解關聯(lián)查詢 203
6.4 查詢執(zhí)行的基礎 204
6.4.1 mysql 客戶端/ 服務器通信協(xié)議 205
6.4.2 查詢緩存 208
6.4.3 查詢優(yōu)化處理 208
6.4.4 查詢執(zhí)行引擎 222
6.4.5 返回結果給客戶端 223
6.5 mysql 查詢優(yōu)化器的局限性 223
6.5.1 關聯(lián)子查詢 223
6.5.2 union 的限制 228
6.5.3 索引合并優(yōu)化 228
6.5.4 等值傳遞 229
6.5.5 并行執(zhí)行 229
6.5.6 哈希關聯(lián) 229
6.5.7 松散索引掃描 229
6.5.8 最大值和最小值優(yōu)化 231
6.5.9 在同一個表上查詢和更新 232
6.6 查詢優(yōu)化器的提示(hint) 232
6.7 優(yōu)化特定類型的查詢 236
6.7.1 優(yōu)化count() 查詢 236
6.7.2 優(yōu)化關聯(lián)查詢 239
6.7.3 優(yōu)化子查詢 239
6.7.4 優(yōu)化group by 和distinct 239
6.7.5 優(yōu)化limit 分頁 241
6.7.6 優(yōu)化sql_calc_found_rows 243
6.7.7 優(yōu)化union 查詢 243
6.7.8 靜態(tài)查詢分析 244
6.7.9 使用用戶自定義變量 244
6.8 案例學習 251
6.8.1 使用mysql 構建一個隊列表 251
6.8.2 計算兩點之間的距離 254
6.8.3 使用用戶自定義函數(shù) 257
6.9 總結 258
第7 章 mysql 高級特性 259
7.1 分區(qū)表 259
7.1.1 分區(qū)表的原理 260
7.1.2 分區(qū)表的類型 261
7.1.3 如何使用分區(qū)表 262
7.1.4 什么情況下會出問題 263
7.1.5 查詢優(yōu)化 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 內(nèi)部存儲代碼 276
7.4.1 存儲過程和函數(shù) 278
7.4.2 觸發(fā)器 279
7.4.3 事件 281
7.4.4 在存儲程序中保留注釋 283
7.5 游標 283
7.6 綁定變量 284
7.6.1 綁定變量的優(yōu)化 286
7.6.2 sql 接口的綁定變量 286
7.6.3 綁定變量的限制 288
7.7 用戶自定義函數(shù) 289
7.8 插件 290
7.9 字符集和校對 291
7.9.1 mysql 如何使用字符集 292
7.9.2 選擇字符集和校對規(guī)則 295
7.9.3 字符集和校對規(guī)則如何影響查詢 296
7.10 全文索引 299
7.10.1 自然語言的全文索引 300
7.10.2 布爾全文索引 302
7.10.3 mysql5.1 中全文索引的變化 303
7.10.4 全文索引的限制和替代方案 304
7.10.5 全文索引的配置和優(yōu)化 306
7.11 分布式(xa)事務 307
7.11.1 內(nèi)部xa 事務 307
7.11.2 外部xa 事務 308
7.12 查詢緩存 309
7.12.1 mysql 如何判斷緩存命中 309
7.12.2 查詢緩存如何使用內(nèi)存 311
7.12.3 什么情況下查詢緩存能發(fā)揮作用 313
7.12.4 如何配置和維護查詢緩存 316
7.12.5 innodb 和查詢緩存 319
7.12.6 通用查詢緩存優(yōu)化 320
7.12.7 查詢緩存的替代方案 321
7.13 總結 321
第8 章 優(yōu)化服務器設置 325
8.1 mysql 配置的工作原理 326
8.1.1 語法、作用域和動態(tài)性 327
8.1.2 設置變量的副作用 328
8.1.3 入門 331
8.1.4 通過基準測試迭代優(yōu)化 332
8.2 什么不該做 333
8.3 創(chuàng)建mysql 配置文件 335
8.3.1 檢查mysql 服務器狀態(tài)變量 339
8.4 配置內(nèi)存使用 340
8.4.1 mysql 可以使用多少內(nèi)存? 340
8.4.2 每個連接需要的內(nèi)存 341
8.4.3 為操作系統(tǒng)保留內(nèi)存 341
8.4.4 為緩存分配內(nèi)存 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 數(shù)據(jù)字典(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 并發(fā) 363
8.6.1 innodb 并發(fā)配置 364
8.6.2 myisam 并發(fā)配置 365
8.7 基于工作負載的配置 366
8.7.1 優(yōu)化blob 和text 的場景 367
8.7.2 優(yōu)化排序(filesorts) 368
8.8 完成基本配置 369
8.9 安全和穩(wěn)定的設置 371
8.10 高級innodb 設置 374
8.11 總結 376
第9 章 操作系統(tǒng)和硬件優(yōu)化 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 平衡內(nèi)存和磁盤資源 382
9.3.1 隨機i/o 和順序i/o 383
9.3.2 緩存,讀和寫 384
9.3.3 工作集是什么 385
9.3.4 找到有效的內(nèi)存/ 磁盤比例 386
9.3.5 選擇硬盤 387
9.4 固態(tài)存儲 389
9.4.1 閃存概述 390
9.4.2 閃存技術 391
9.4.3 閃存的基準測試 392
9.4.4 固態(tài)硬盤驅(qū)動器(ssd) 393
9.4.5 pcie 存儲設備 395
9.4.6 其他類型的固態(tài)存儲 396
9.4.7 什么時候應該使用閃存 396
9.4.8 使用flashcache 397
9.4.9 優(yōu)化固態(tài)存儲上的mysql 399
9.5 為備庫選擇硬件 402
9.6 raid 性能優(yōu)化 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 網(wǎng)絡配置 416
9.10 選擇操作系統(tǒng) 418
9.11 選擇文件系統(tǒng) 419
9.12 選擇磁盤隊列調(diào)度策略 421
9.13 線程 422
9.14 內(nèi)存交換區(qū) 422
9.15 操作系統(tǒng)狀態(tài) 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 發(fā)生內(nèi)存交換的機器 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 創(chuàng)建復制賬號 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 基于行或基于語句:哪種更優(yōu) 446
10.3.4 復制文件 448
10.3.5 發(fā)送復制事件到其他備庫 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 環(huán)形復制 457
10.4.6 主庫、分發(fā)主庫以及備庫 458
10.4.7 樹或金字塔形 460
10.4.8 定制的復制方案 460
10.5 復制和容量規(guī)劃 465
10.5.1 為什么復制無法擴展寫操作 466
10.5.2 備庫什么時候開始延遲 466
10.5.3 規(guī)劃冗余容量 467
10.6 復制管理和維護 468
10.6.1 監(jiān)控復制 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 數(shù)據(jù)損壞或丟失的錯誤 477
10.7.2 使用非事務型表 480
10.7.3 混合事務型和非事務型表 480
10.7.4 不確定語句 481
10.7.5 主庫和備庫使用不同的存儲引擎 481
10.7.6 備庫發(fā)生數(shù)據(jù)改變 481
10.7.7 不唯一的服務器id 482
10.7.8 未定義的服務器id 482
10.7.9 對未復制數(shù)據(jù)的依賴性 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 規(guī)劃可擴展性 507
11.2.2 為擴展贏得時間 508
11.2.3 向上擴展 509
11.2.4 向外擴展 510
11.2.5 通過多實例擴展 525
11.2.6 通過集群擴展 526
11.2.7 向內(nèi)擴展 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 如何實現(xiàn)高可用性 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 云的優(yōu)點、缺點和相關誤解 564
13.2 mysql 在云端的經(jīng)濟價值 566
13.3 云中的mysql 的可擴展性和高可用性 567
13.4 四種基礎資源 568
13.5 mysql 在云主機上的性能 569
13.5.1 在云端的mysql 基準測試 571
13.6 mysql 數(shù)據(jù)庫即服務(dbaas) 573
13.6.1 amazon rds 573
13.6.2 其他dbaas 解決方案 574
13.7 總結 575
第14 章 應用層優(yōu)化 577
14.1 常見問題 577
14.2 web 服務器問題 579
14.2.1 尋找最優(yōu)并發(fā)度 581
14.3 緩存 582
14.3.1 應用層以下的緩存 583
14.3.2 應用層緩存 584
14.3.3 緩存控制策略 586
14.3.4 緩存對象分層 587
14.3.5 預生成內(nèi)容 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 備份數(shù)據(jù) 607
15.5.1 生成邏輯備份 607
15.5.2 文件系統(tǒng)快照 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 監(jiān)測工具 637
16.4.1 開源的監(jiān)控工具 638
16.4.2 商業(yè)監(jiān)控系統(tǒng) 640
16.4.3 innotop 的命令行監(jiān)控 642
16.5 總結 646
附錄a mysql 分支與變種 649
附錄b mysql 服務器狀態(tài) 655
附錄c 大文件傳輸 683
附錄d explain 687
附錄e 鎖的調(diào)試 703
附錄f 在mysql 上使用sphinx 713</p
- 下載地址
發(fā)表評論
0條評論軟件排行榜
熱門推薦
- 有柿電腦版 v11.5.684.06M / 簡體中文
- 得間免費小說電腦版 v5.2.7.172.56M / 簡體中文
- 瀟湘書院電腦版 v2.3.11.888官方版49.65M / 簡體中文
- 吉利博瑞用戶手冊 pdf高清版57.89M / 簡體中文
- 開源閱讀電腦版 v3.2517.96M / 簡體中文
- 京東讀書電腦版 v1.13.4官方版1.98M / 簡體中文
- 未公開的Oracle數(shù)據(jù)庫秘密 迪貝斯pdf掃描版34.69M / 簡體中文
- PHP語言精粹電子書 pdf掃描版25.72M / 簡體中文
- 本草綱目 5.34M / 簡體中文
- docker入門實戰(zhàn) pdf完整版1.38M / 簡體中文