目錄
前言1
第1章 查詢響應時間5
1.1 假性能的一個真故事6
1.2 北極星6
1.3 查詢報告7
1.4 查詢分析14
1.5 改進查詢響應時間29
1.6 何時優(yōu)化查詢31
1.7 MySQL:更快一點32
1.8 小結33
1.9 練習:識別慢查詢34
第2章 索引和編制索引36
2.1 性能的紅鯡魚38
2.2 MySQL索引:通過圖示介紹40
2.3 編制索引:如何像MySQL一樣思考75
2.4 索引降級的常見原因79
2.5 表連接算法82
2.6 小結84
2.7 練習:找到重復的索引84
第3章 數據86
3.1 三個秘密87
3.2 少數據原則91
3.3 刪除或歸檔數據108
3.4 小結112
3.5 練習:審查查詢的數據訪問情況113
第4章 訪問模式114
4.1 MySQL什么都不做115
4.2 性能在極限位置變得不穩(wěn)定116
4.3 豐田和法拉利120
4.4 數據訪問模式121
4.5 應用程序修改129
4.6 更好、更快的硬件137
4.7 小結138
4.8 練習:描述訪問模式139
第5章 分片140
5.1 為什么單個數據庫不能伸縮140
5.2 小鵝卵石而不是巨石147
5.3 分片簡介148
5.4 替代選項157
5.5 小結160
5.6 練習:四年擬合160
第6章 服務器指標162
6.1 查詢性能與服務器性能對比164
6.2 正常且穩(wěn)定:好的數據庫是枯燥的數據庫166
6.3 關鍵性能指示器167
6.4 指標領域168
6.5 光譜173
6.6 監(jiān)控和警報206
6.7 小結213
6.8 練習:檢查關鍵性能指示器213
6.9 練習:檢查警報和閾值214
第7章 復制延遲215
7.1 基礎216
7.2 原因221
7.3 風險:數據丟失223
7.4 降低延遲:多線程復制227
7.5 監(jiān)控231
7.6 恢復時間233
7.7 小結234
7.8 練習:監(jiān)控次秒級延遲235
第8章 事務238
8.1 行鎖239
8.2 MVCC和回滾日志253
8.3 歷史列表長度257
8.4 常見問題259
8.5 報告263
8.6 小結270
8.7 練習:對歷史列表長度發(fā)出警報271
8.8 練習:檢查行鎖271
第9章 其他挑戰(zhàn)273
9.1 腦裂是大的風險273
9.2 數據漂移真實存在但不可見274
9.3 不要信任ORM275
9.4 模式總會改變276
9.5 MySQL擴展了標準SQL276
9.6 吵鬧的鄰居277
9.7 應用程序不會優(yōu)雅地失敗277
9.8 高性能MySQL很難278
9.9 練習:識別阻止發(fā)生腦裂的防護措施279
9.10 練習:檢查數據漂移280
9.11 練習:混沌281
第10章 云中的MySQL283
10.1 兼容性284
10.2 管理285
10.3 網絡和存儲時延287
10.4 性能就是金錢289
10.5 小結290
10.6 練習:在云中試用MySQL291