《高性能MySQL(第3版)》編輯推薦:「只要你不敢以MySQL專家自誇,又豈敢錯過這本神書?」「一言以蔽之,寫得好,編排得好,須要參考時容易到爆!」「我但是從頭至尾看了一遍上一版,可仍是堅決果斷拿起了這本書,並且看完後一點都不後悔……」數據庫
《高性能MySQL(第3版)》是MySQL 領域的經典之做,擁有普遍的影響力。第3 版更新了大量的內容,不但涵蓋了最新MySQL 5.5版本的新特性,也講述了關於固態盤、高可擴展性設計和雲計算環境下的數據庫相關的新內容,原有的基準測試和性能優化部分也作了大量的擴展和補充。全書共分爲16 章和6 個附錄,內容涵蓋MySQL 架構和歷史,基準測試和性能剖析,數據庫軟硬件性能優化,複製、備份和恢復,高可用與高可擴展性,以及雲端的MySQL 和MySQL相關工具等方面的內容。每一章都是相對獨立的主題,讀者能夠有選擇性地單獨閱讀。緩存
本書不但適合數據庫管理員(DBA)閱讀,也適合開發人員參考學習。無論是數據庫新手仍是專家,相信都能從本書有所收穫。安全
目錄 性能優化
推薦序
前言
第1章MySQL架構與歷史1
1.1MySQL邏輯架構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.4MySQL中的事務10
1.4多版本併發控制12
1.5MySQL的存儲引擎13
1.5.1InnoDB存儲引擎16
1.5.2MyISAM存儲引擎17
1.5.3MySQL內建的其餘存儲引擎19
1.5.4第三方存儲引擎22
1.5.5選擇合適的引擎24
1.5.6轉換表的引擎27
1.6MySQL時間線(Timeline)29
1.7MySQL的開發模式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_load53
2.5.2MySQL基準測試套件54
2.5.3sysbench55
2.5.4數據庫測試套件中的dbt2TPC—C測試60
2.5.5Percona的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使用strace107
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選擇標識符(identifier)125
4.1.7特殊類型數據127
4.2MySQLschema設計中的陷阱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加快ALTERTABLE操做的速度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.2MySQL是否在掃描額外的記錄198
6.3重構查詢的方式201
6.3.1一個複雜查詢仍是多個簡單查詢201
6.3.2切分查詢202
6.3.3分解關聯查詢203
6.4查詢執行的基礎204
6.4.1MySQL客戶端/服務器通訊協議205
6.4.2查詢緩存208
6.4.3查詢優化處理208
6.4.4查詢執行引擎222
6.4.5返回結果給客戶端223
6.5MySQL查詢優化器的侷限性223
6.5.1關聯子查詢223
6.5.2UNION的限制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優化GROUPBY和DISTINCT239
6.7.5優化LIMIT分頁241
6.7.6優化SQL_CALC_FOUND_ROWS243
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.2SQL接口的綁定變量286
7.6.3綁定變量的限制288
7.7用戶自定義函數289
7.8插件290
7.9字符集和校對291
7.9.1MySQL如何使用字符集292
7.9.2選擇字符集和校對規則295
7.9.3字符集和校對規則如何影響查詢296
7.10全文索引299
7.10.1天然語言的全文索引300
7.10.2布爾全文索引302
7.10.3MySQL5.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.1MySQL如何判斷緩存命中309
7.12.2查詢緩存如何使用內存311
7.12.3什麼狀況下查詢緩存能發揮做用313
7.12.4如何配置和維護查詢緩存316
7.12.5InnoDB和查詢緩存319
7.12.6通用查詢緩存優化320
7.12.7查詢緩存的替代方案321
7.13總結321
……
第8章優化服務器設置325
第9章操做系統和硬件優化377
第10章複製433
第11章可擴展的MySQL501
第12章高可用性543
第13章雲端的MySQL563
第14章應用層優化577
第15章備份與恢復593
第16章MySQL用戶工具635
附錄AMySQL分支與變種649
附錄BMySQL服務器狀態655
附錄C大文件傳輸683
附錄DEXPLAIN687
附錄E鎖的調試703
附錄F在MySQL上使用Sphinx713
索引739服務器