高效能MySQL:提升MySQL性能的技術(shù)與技巧
定 價(jià):129 元
- 作者:[美]丹尼爾·尼希特
- 出版時(shí)間:2023/11/1
- ISBN:9787111737933
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TP311.138SQ
- 頁(yè)碼:
- 紙張:膠版紙
- 版次:
- 開本:16開
本書是一本系統(tǒng)介紹MySQL性能優(yōu)化相關(guān)技術(shù)、方法及實(shí)踐的實(shí)用指南。在書中,作者首先詳細(xì)解釋了查詢響應(yīng)時(shí)間;然后介紹了直接查詢優(yōu)化(創(chuàng)建和編制索引)、間接查詢優(yōu)化(減少數(shù)據(jù)訪問(wèn)和存儲(chǔ))等提高M(jìn)ySQL性能的方法,還通過(guò)講解數(shù)據(jù)訪問(wèn)模式、MySQL分片的基本機(jī)制、MySQL的服務(wù)器指標(biāo)、復(fù)制延遲、MySQL的事務(wù)(涉及InnoDB行鎖)等知識(shí)為優(yōu)化MySQL性能提供思路;之后介紹了一些常見的MySQL挑戰(zhàn),以及應(yīng)對(duì)方法;后討論了在云中使用MySQL時(shí)需要知道的知識(shí),拓展了讀者的思維。
目前既有介紹MySQL性能基礎(chǔ)知識(shí)的圖書,也有介紹MySQL性能高級(jí)知識(shí)的圖書,但還沒(méi)有介于兩者之間的圖書。這是因?yàn),不介紹MySQL性能的復(fù)雜性,就很難解釋MySQL性能。而本書填補(bǔ)了這個(gè)空白,向軟件工程師講解超出基礎(chǔ)知識(shí),但又遠(yuǎn)沒(méi)到數(shù)據(jù)庫(kù)管理員(DBA)需要知道的深層內(nèi)部原理的中級(jí)MySQL知識(shí)。
Daniel Nichter將教你應(yīng)用直接影響MySQL性能的佳實(shí)踐和技術(shù),通過(guò)分析查詢執(zhí)行、為常用的SQL子句和表連接創(chuàng)建索引、優(yōu)化數(shù)據(jù)訪問(wèn)、理解重要的MySQL指標(biāo)來(lái)提高性能,并了解復(fù)制、事務(wù)、行鎖和云對(duì)MySQL性能所產(chǎn)生的影響。
通過(guò)學(xué)習(xí)本書,你將:
? 理解為什么查詢響應(yīng)時(shí)間是MySQL性能的北極星。
? 詳細(xì)學(xué)習(xí)查詢指標(biāo),包括聚合、報(bào)告和分析。
? 了解如何為常用的SQL子句和表連接創(chuàng)建有效的索引。
? 探索重要的服務(wù)器指標(biāo),并了解它們揭示了性能的哪些信息。
? 深入了解事務(wù)和行鎖,以獲得深入、可操作的洞見。
? 在任意規(guī)模都能實(shí)現(xiàn)出色的MySQL性能。
目錄
前言1
第1章 查詢響應(yīng)時(shí)間5
1.1 假性能的一個(gè)真故事6
1.2 北極星6
1.3 查詢報(bào)告7
1.4 查詢分析14
1.5 改進(jìn)查詢響應(yīng)時(shí)間29
1.6 何時(shí)優(yōu)化查詢31
1.7 MySQL:更快一點(diǎn)32
1.8 小結(jié)33
1.9 練習(xí):識(shí)別慢查詢34
第2章 索引和編制索引36
2.1 性能的紅鯡魚38
2.2 MySQL索引:通過(guò)圖示介紹40
2.3 編制索引:如何像MySQL一樣思考75
2.4 索引降級(jí)的常見原因79
2.5 表連接算法82
2.6 小結(jié)84
2.7 練習(xí):找到重復(fù)的索引84
第3章 數(shù)據(jù)86
3.1 三個(gè)秘密87
3.2 少數(shù)據(jù)原則91
3.3 刪除或歸檔數(shù)據(jù)108
3.4 小結(jié)112
3.5 練習(xí):審查查詢的數(shù)據(jù)訪問(wèn)情況113
第4章 訪問(wèn)模式114
4.1 MySQL什么都不做115
4.2 性能在極限位置變得不穩(wěn)定116
4.3 豐田和法拉利120
4.4 數(shù)據(jù)訪問(wèn)模式121
4.5 應(yīng)用程序修改129
4.6 更好、更快的硬件137
4.7 小結(jié)138
4.8 練習(xí):描述訪問(wèn)模式139
第5章 分片140
5.1 為什么單個(gè)數(shù)據(jù)庫(kù)不能伸縮140
5.2 小鵝卵石而不是巨石147
5.3 分片簡(jiǎn)介148
5.4 替代選項(xiàng)157
5.5 小結(jié)160
5.6 練習(xí):四年擬合160
第6章 服務(wù)器指標(biāo)162
6.1 查詢性能與服務(wù)器性能對(duì)比164
6.2 正常且穩(wěn)定:好的數(shù)據(jù)庫(kù)是枯燥的數(shù)據(jù)庫(kù)166
6.3 關(guān)鍵性能指示器167
6.4 指標(biāo)領(lǐng)域168
6.5 光譜173
6.6 監(jiān)控和警報(bào)206
6.7 小結(jié)213
6.8 練習(xí):檢查關(guān)鍵性能指示器213
6.9 練習(xí):檢查警報(bào)和閾值214
第7章 復(fù)制延遲215
7.1 基礎(chǔ)216
7.2 原因221
7.3 風(fēng)險(xiǎn):數(shù)據(jù)丟失223
7.4 降低延遲:多線程復(fù)制227
7.5 監(jiān)控231
7.6 恢復(fù)時(shí)間233
7.7 小結(jié)234
7.8 練習(xí):監(jiān)控次秒級(jí)延遲235
第8章 事務(wù)238
8.1 行鎖239
8.2 MVCC和回滾日志253
8.3 歷史列表長(zhǎng)度257
8.4 常見問(wèn)題259
8.5 報(bào)告263
8.6 小結(jié)270
8.7 練習(xí):對(duì)歷史列表長(zhǎng)度發(fā)出警報(bào)271
8.8 練習(xí):檢查行鎖271
第9章 其他挑戰(zhàn)273
9.1 腦裂是大的風(fēng)險(xiǎn)273
9.2 數(shù)據(jù)漂移真實(shí)存在但不可見274
9.3 不要信任ORM275
9.4 模式總會(huì)改變276
9.5 MySQL擴(kuò)展了標(biāo)準(zhǔn)SQL276
9.6 吵鬧的鄰居277
9.7 應(yīng)用程序不會(huì)優(yōu)雅地失敗277
9.8 高性能MySQL很難278
9.9 練習(xí):識(shí)別阻止發(fā)生腦裂的防護(hù)措施279
9.10 練習(xí):檢查數(shù)據(jù)漂移280
9.11 練習(xí):混沌281
第10章 云中的MySQL283
10.1 兼容性284
10.2 管理285
10.3 網(wǎng)絡(luò)和存儲(chǔ)時(shí)延287
10.4 性能就是金錢289
10.5 小結(jié)290
10.6 練習(xí):在云中試用MySQL291