首 頁
手機版

高性能mysql第3版中文版pdf

  • 軟件大?。?0.65M
  • 軟件語言:簡體中文
  • 軟件類型:國產(chǎn)軟件
  • 軟件授權(quán):免費軟件
  • 更新時間:2023/08/25
  • 軟件類別:電子閱讀
  • 應(yīng)用平臺:Windows11,Windows10,Windows8,Windows7,WinVista,Win2003,WinXP,Win2000
網(wǎng)友評分:8.6分
網(wǎng)友評論 下載地址 收藏該頁
本地下載

高性能mysql第3版是mysql領(lǐng)域的經(jīng)典之作,由baron scbwartz、peter zaitsev、vadim tkacbenko著作,寧海元、周振、彭立勛、翟衛(wèi)祥等翻譯。第3版更新了大量的內(nèi)容,不但涵蓋了最新mysql5.5版本的新特性,也講述了關(guān)于固態(tài)盤、高可擴展性設(shè)計和云計算環(huán)境下的數(shù)據(jù)庫相關(guān)的新內(nèi)容,原有的基準(zhǔn)測試和性能優(yōu)化部分也做了大量的擴展和補充。全書共分為16 章和6 個附錄,內(nèi)容涵蓋mysql架構(gòu)和歷史,基準(zhǔn)測試和性能剖析,數(shù)據(jù)庫軟硬件性能優(yōu)化,復(fù)制、備份和恢復(fù),高可用與高可擴展性,以及云端的mysql和mysql相關(guān)工具等方面的內(nèi)容。每一章都是相對獨立的主題,讀者可以有選擇性地單獨閱讀。

此外,高性能mysql第3版不但適合數(shù)據(jù)庫管理員(dba)閱讀,也適合開發(fā)人員參考學(xué)習(xí)。不管是數(shù)據(jù)庫新手還是專家,相信都能從本書有所收獲。

作者簡介

Baron Schwartz 是一位軟件工程師,居住在弗吉尼亞州的Charlottesville,網(wǎng)絡(luò)常用名是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 公司的性能工程師。作為一名在多線程編程和同步方面的專家,他的主要工作是基準(zhǔn)測試、性能剖析,以及找出系統(tǒng)的性能瓶頸。他還在性能監(jiān)控和調(diào)優(yōu)方面做了一些工作,使得MySQL 在多核機器上有更好的可擴展性。</p

高性能mysql第3版pdf目錄

第1 章 mysql 架構(gòu)與歷史 1

1.1 mysql 邏輯架構(gòu) 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 事務(wù)6

1.3.1 隔離級別 8

1.3.2 死鎖 9

1.3.3 事務(wù)日志 10

1.3.4 mysql 中的事務(wù) 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 轉(zhuǎn)換表的引擎 27

1.6 mysql 時間線(timeline) 29

1.7 mysql 的開發(fā)模式 32

1.8 總結(jié) 33

第2 章 mysql 基準(zhǔn)測試 35

2.1 為什么需要基準(zhǔn)測試 35

2.2 基準(zhǔn)測試的策略 37

2.2.1 測試何種指標(biāo) 38

2.3 基準(zhǔn)測試方法 40

2.3.1 設(shè)計和規(guī)劃基準(zhǔn)測試 41

2.3.2 基準(zhǔn)測試應(yīng)該運行多長時間 42

2.3.3 獲取系統(tǒng)性能和狀態(tài) 43

2.3.4 獲得準(zhǔn)確的測試結(jié)果 44

2.3.5 運行基準(zhǔn)測試并分析結(jié)果 46

2.3.6 繪圖的重要性 47

2.4 基準(zhǔn)測試工具 49

2.4.1 集成式測試工具 49

2.4.2 單組件式測試工具 50

2.5 基準(zhǔn)測試案例 52

2.5.1 http_load 53

2.5.2 mysql 基準(zhǔn)測試套件 54

2.5.3 sysbench 55

2.5.4 數(shù)據(jù)庫測試套件中的dbt2 tpc-c 測試 60

2.5.5 percona 的tpcc-mysql 測試工具 63

2.6 總結(jié) 65

第3 章 服務(wù)器性能剖析 67

3.1 性能優(yōu)化簡介 67

3.1.1 通過性能剖析進行優(yōu)化 69

3.1.2 理解性能剖析 71

3.2 對應(yīng)用程序進行性能剖析 72

3.2.1 測量php 應(yīng)用程序 74

3.3 剖析mysql 查詢 77

3.3.1 剖析服務(wù)器負(fù)載 77

3.3.2 剖析單條查詢 81

3.3.3 使用性能剖析 87

3.4 診斷間歇性問題 88

3.4.1 單條查詢問題還是服務(wù)器問題 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 總結(jié) 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 選擇標(biāo)識符(identifier) 125

4.1.7 特殊類型數(shù)據(jù) 127

4.2 mysql schema 設(shè)計中的陷阱 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 總結(jié) 140

第5 章 創(chuàng)建高性能的索引 141

5.1 索引基礎(chǔ) 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 冗余和重復(fù)索引 178

5.3.10 未使用的索引 181

5.3.11 索引和鎖 181

5.4 索引案例學(xué)習(xí) 183

5.4.1 支持多種過濾條件 183

5.4.2 避免多個范圍條件 185

5.4.3 優(yōu)化排序 186

5.5 維護索引和表 187

5.5.1 找到并修復(fù)損壞的表 187

5.5.2 更新索引統(tǒng)計信息 188

5.5.3 減少索引和數(shù)據(jù)的碎片 190

5.6 總結(jié) 192

第6 章 查詢性能優(yōu)化 195

6.1 為什么查詢速度會慢 195

6.2 慢查詢基礎(chǔ):優(yōu)化數(shù)據(jù)訪問 196

6.2.1 是否向數(shù)據(jù)庫請求了不需要的數(shù)據(jù) 196

6.2.2 mysql 是否在掃描額外的記錄 198

6.3 重構(gòu)查詢的方式 201

6.3.1 一個復(fù)雜查詢還是多個簡單查詢 201

6.3.2 切分查詢 202

6.3.3 分解關(guān)聯(lián)查詢 203

6.4 查詢執(zhí)行的基礎(chǔ) 204

6.4.1 mysql 客戶端/ 服務(wù)器通信協(xié)議 205

6.4.2 查詢緩存 208

6.4.3 查詢優(yōu)化處理 208

6.4.4 查詢執(zhí)行引擎 222

6.4.5 返回結(jié)果給客戶端 223

6.5 mysql 查詢優(yōu)化器的局限性 223

6.5.1 關(guān)聯(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 哈希關(guān)聯(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)化關(guān)聯(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 案例學(xué)習(xí) 251

6.8.1 使用mysql 構(gòu)建一個隊列表 251

6.8.2 計算兩點之間的距離 254

6.8.3 使用用戶自定義函數(shù) 257

6.9 總結(jié) 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 游標(biāo) 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)事務(wù) 307

7.11.1 內(nèi)部xa 事務(wù) 307

7.11.2 外部xa 事務(wù) 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 總結(jié) 321

第8 章 優(yōu)化服務(wù)器設(shè)置 325

8.1 mysql 配置的工作原理 326

8.1.1 語法、作用域和動態(tài)性 327

8.1.2 設(shè)置變量的副作用 328

8.1.3 入門 331

8.1.4 通過基準(zhǔn)測試迭代優(yōu)化 332

8.2 什么不該做 333

8.3 創(chuàng)建mysql 配置文件 335

8.3.1 檢查mysql 服務(wù)器狀態(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 基于工作負(fù)載的配置 366

8.7.1 優(yōu)化blob 和text 的場景 367

8.7.2 優(yōu)化排序(filesorts) 368

8.8 完成基本配置 369

8.9 安全和穩(wěn)定的設(shè)置 371

8.10 高級innodb 設(shè)置 374

8.11 總結(jié) 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 架構(gòu) 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 閃存技術(shù) 391

9.4.3 閃存的基準(zhǔn)測試 392

9.4.4 固態(tài)硬盤驅(qū)動器(ssd) 393

9.4.5 pcie 存儲設(shè)備 395

9.4.6 其他類型的固態(tài)存儲 396

9.4.7 什么時候應(yīng)該使用閃存 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 的故障轉(zhuǎn)移、恢復(fù)和鏡像 405

9.6.2 平衡硬件raid 和軟件raid 406

9.6.3 raid 配置和緩存 407

9.7 san 和nas 410

9.7.1 san 基準(zhǔn)測試 411

9.7.2 使用基于nfs 或smb 的san 412

9.7.3 mysql 在san 上的性能 412

9.7.4 應(yīng)該用san 嗎 413

9.8 使用多磁盤卷 414

9.9 網(wǎng)絡(luò)配置 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 總結(jié) 431

第10 章 復(fù)制 433

10.1 復(fù)制概述 433

10.1.1 復(fù)制解決的問題 434

10.1.2 復(fù)制如何工作 435

10.2 配置復(fù)制 436

10.2.1 創(chuàng)建復(fù)制賬號 437

10.2.2 配置主庫和備庫 437

10.2.3 啟動復(fù)制 439

10.2.4 從另一個服務(wù)器開始復(fù)制 441

10.2.5 推薦的復(fù)制配置 443

10.3 復(fù)制的原理 445

10.3.1 基于語句的復(fù)制 445

10.3.2 基于行的復(fù)制 446

10.3.3 基于行或基于語句:哪種更優(yōu) 446

10.3.4 復(fù)制文件 448

10.3.5 發(fā)送復(fù)制事件到其他備庫 449

10.3.6 復(fù)制過濾器 450

10.4 復(fù)制拓?fù)?452

10.4.1 一主庫多備庫 452

10.4.2 主動- 主動模式下的主- 主復(fù)制 453

10.4.3 主動- 被動模式下的主- 主復(fù)制 455

10.4.4 擁有備庫的主- 主結(jié)構(gòu) 456

10.4.5 環(huán)形復(fù)制 457

10.4.6 主庫、分發(fā)主庫以及備庫 458

10.4.7 樹或金字塔形 460

10.4.8 定制的復(fù)制方案 460

10.5 復(fù)制和容量規(guī)劃 465

10.5.1 為什么復(fù)制無法擴展寫操作 466

10.5.2 備庫什么時候開始延遲 466

10.5.3 規(guī)劃冗余容量 467

10.6 復(fù)制管理和維護 468

10.6.1 監(jiān)控復(fù)制 468

10.6.2 測量備庫延遲 469

10.6.3 確定主備是否一致 469

10.6.4 從主庫重新同步備庫 470

10.6.5 改變主庫 471

10.6.6 在一個主- 主配置中交換角色 476

10.7 復(fù)制的問題和解決方案 477

10.7.1 數(shù)據(jù)損壞或丟失的錯誤 477

10.7.2 使用非事務(wù)型表 480

10.7.3 混合事務(wù)型和非事務(wù)型表 480

10.7.4 不確定語句 481

10.7.5 主庫和備庫使用不同的存儲引擎 481

10.7.6 備庫發(fā)生數(shù)據(jù)改變 481

10.7.7 不唯一的服務(wù)器id 482

10.7.8 未定義的服務(wù)器id 482

10.7.9 對未復(fù)制數(shù)據(jù)的依賴性 482

10.7.10 丟失的臨時表 483

10.7.11 不復(fù)制所有的更新 484

10.7.12 innodb 加鎖讀引起的鎖爭用 484

10.7.13 在主- 主復(fù)制結(jié)構(gòu)中寫入兩臺主庫 486

10.7.14 過大的復(fù)制延遲 488

10.7.15 來自主庫的過大的包 491

10.7.16 受限制的復(fù)制帶寬 491

10.7.17 磁盤空間不足 492

10.7.18 復(fù)制的局限性 492

10.8 復(fù)制有多快 492

10.9 mysql 復(fù)制的高級特性 494

10.10 其他復(fù)制技術(shù) 496

10.11 總結(jié) 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 負(fù)載均衡 532

11.3.1 直接連接 534

11.3.2 引入中間件 537

11.3.3 一主多備間的負(fù)載均衡 540

11.4 總結(jié) 541

第12 章 高可用性 543

12.1 什么是高可用性 543

12.2 導(dǎo)致宕機的原因 544

12.3 如何實現(xiàn)高可用性 545

12.3.1 提升平均失效時間(mtbf) 545

12.3.2 降低平均恢復(fù)時間(mttr) 547

12.4 避免單點失效 548

12.4.1 共享存儲或磁盤復(fù)制 549

12.4.2 mysql 同步復(fù)制 551

12.4.3 基于復(fù)制的冗余 555

12.5 故障轉(zhuǎn)移和故障恢復(fù) 556

12.5.1 提升備庫或切換角色 558

12.5.2 虛擬ip 地址或ip 接管 558

12.5.3 中間件解決方案 559

12.5.4 在應(yīng)用中處理故障轉(zhuǎn)移 560

12.6 總結(jié) 560

第13 章 云端的mysql 563

13.1 云的優(yōu)點、缺點和相關(guān)誤解 564

13.2 mysql 在云端的經(jīng)濟價值 566

13.3 云中的mysql 的可擴展性和高可用性 567

13.4 四種基礎(chǔ)資源 568

13.5 mysql 在云主機上的性能 569

13.5.1 在云端的mysql 基準(zhǔn)測試 571

13.6 mysql 數(shù)據(jù)庫即服務(wù)(dbaas) 573

13.6.1 amazon rds 573

13.6.2 其他dbaas 解決方案 574

13.7 總結(jié) 575

第14 章 應(yīng)用層優(yōu)化 577

14.1 常見問題 577

14.2 web 服務(wù)器問題 579

14.2.1 尋找最優(yōu)并發(fā)度 581

14.3 緩存 582

14.3.1 應(yīng)用層以下的緩存 583

14.3.2 應(yīng)用層緩存 584

14.3.3 緩存控制策略 586

14.3.4 緩存對象分層 587

14.3.5 預(yù)生成內(nèi)容 588

14.3.6 作為基礎(chǔ)組件的緩存 589

14.3.7 使用handlersocket 和memcached 589

14.4 拓展mysql 590

14.5 mysql 的替代品 590

14.6 總結(jié) 591

第15 章 備份與恢復(fù) 593

15.1 為什么要備份 594

15.2 定義恢復(fù)需求 595

15.3 設(shè)計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 從備份中恢復(fù) 617

15.6.1 恢復(fù)物理備份 618

15.6.2 還原邏輯備份 619

15.6.3 基于時間點的恢復(fù) 622

15.6.4 更高級的恢復(fù)技術(shù) 624

15.6.5 innodb 崩潰恢復(fù) 625

15.7 備份和恢復(fù)工具 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 總結(jié) 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 總結(jié) 646

附錄a mysql 分支與變種 649

附錄b mysql 服務(wù)器狀態(tài) 655

附錄c 大文件傳輸 683

附錄d explain 687

附錄e 鎖的調(diào)試 703

附錄f 在mysql 上使用sphinx 713</p

收起介紹展開介紹
  • 下載地址
高性能mysql第3版中文版pdf

有問題? 點此報錯

發(fā)表評論

0條評論