《高性能MySQL(第4版)》是2022年10月電子工業出版社出版的圖書,作者是【美】Silvia Botros、Jeremy Tinley。
基本介紹
- 中文名:高性能MySQL(第4版)
- 作者:【美】Silvia Botros、Jeremy Tinley
- 譯者:寧海元、周振興、張新銘
- 出版社:電子工業出版社
- 出版時間:2022年10月
- 頁數:344 頁
- 定價:100 元
- 開本:16 開
- ISBN:9787121442575
圖書目錄,作者簡介,
圖書目錄
序................................................................................. xxiii
前言............................................................................... xxv
本書第 4 版的致謝.............................................................. xxix
第 1 章 MySQL 架構............................................................ 1
MySQL 的邏輯架構 ...................................................................................................... 1
連線管理與安全性 ................................................................................................ 2
最佳化與執行............................................................................................................ 2
並發控制 ....................................................................................................................... 3
讀寫鎖 ................................................................................................................... 3
鎖的粒度 ............................................................................................................... 4
事務 .............................................................................................................................. 5
隔離級別 ............................................................................................................... 7
死鎖 ....................................................................................................................... 8
事務日誌 ............................................................................................................... 9
MySQL 中的事務 ................................................................................................ 10
多版本並發控制 .......................................................................................................... 12
複製 ............................................................................................................................ 13
數據檔案結構 ............................................................................................................. 14
InnoDB 引擎 ............................................................................................................... 14
JSON 文檔支持 ................................................................................................... 15
數據字典的變化 .................................................................................................. 16
原子 DDL ............................................................................................................ 16
小結 ............................................................................................................................ 16
第 2 章 可靠性工程世界中的監控..............................................17
可靠性工程對 DBA 團隊的影響 ................................................................................. 18
定義服務水平目標 ...................................................................................................... 18
怎樣才能讓客戶滿意 ........................................................................................... 19
用什麼來度量 ............................................................................................................. 20
定義 SLI 和 SLO ................................................................................................. 20
監控解決方案 ...................................................................................................... 21
監控可用性.......................................................................................................... 22
監控查詢延遲 ...................................................................................................... 24
監控報錯 ............................................................................................................. 24
主動監控 ............................................................................................................. 25
度量長期性能 ............................................................................................................. 31
了解業務節奏 ...................................................................................................... 31
有效地跟蹤指標 .................................................................................................. 32
使用監控工具檢查性能 ....................................................................................... 33
使用 SLO 來指導整體架構 .................................................................................. 34
小結 ............................................................................................................................ 34
第 3 章 Performance Schema........................................... 35
Performance Schema 介紹 ........................................................................................... 35
插樁元件 ............................................................................................................. 36
消費者表的組織 .................................................................................................. 37
資源消耗 ............................................................................................................. 39
局限性 ................................................................................................................. 39
sys Schema .......................................................................................................... 40
理解執行緒 ............................................................................................................. 40
配置 ............................................................................................................................ 41
啟用或禁用 Performance Schema ........................................................................ 42
啟用或禁用插樁 .................................................................................................. 42
啟用或禁用消費者表 ........................................................................................... 43
最佳化特定對象的監控 ........................................................................................... 44
最佳化執行緒的監控 .................................................................................................. 45
調整 Performance Schema 的記憶體大小 ................................................................ 46
默認值 ................................................................................................................. 46
使用 Performance Schema ........................................................................................... 46
檢查 SQL 語句 .................................................................................................... 46
檢查讀寫性能 ...................................................................................................... 54
檢查元數據鎖 ...................................................................................................... 56
檢查記憶體使用情況 .............................................................................................. 56
檢查變數 ............................................................................................................. 59
檢查最常見的錯誤 .............................................................................................. 62
檢查 Performance Schema 自身 ........................................................................... 63
小結 ............................................................................................................................ 65
第 4 章 作業系統和硬體最佳化.................................................. 66
什麼限制了 MySQL 的性能 ........................................................................................ 66
如何為 MySQL 選擇 CPU ........................................................................................... 67
平衡記憶體和磁碟資源 .................................................................................................. 67
快取、讀取和寫入 .............................................................................................. 67
你的工作集是什麼 .............................................................................................. 68
固態存儲 ..................................................................................................................... 68
快閃記憶體概述 ............................................................................................................. 69
垃圾收集 ............................................................................................................. 69
RAID 性能最佳化 ........................................................................................................... 70
RAID 故障、恢復和監控 .................................................................................... 72
RAID 配置和快取 ............................................................................................... 73
網路配置 ..................................................................................................................... 75
選擇檔案系統 ............................................................................................................. 77
選擇磁碟佇列調度器 ........................................................................................... 79
記憶體和交換.......................................................................................................... 79
作業系統狀態 ...................................................................................................... 81
其他有用的工具 .................................................................................................. 84
小結 ............................................................................................................................ 84
第 5 章 最佳化伺服器設定....................................................... 86
MySQL 的配置是如何工作的 ..................................................................................... 87
語法、作用域和動態性 ....................................................................................... 88
持久化系統變數 .................................................................................................. 89
設定變數的副作用 .............................................................................................. 89
規劃變數的更改 .................................................................................................. 90
什麼不該做 ................................................................................................................. 91
創建 MySQL 配置檔案 ............................................................................................... 92
最小化配置.......................................................................................................... 92
檢查 MySQL 伺服器的狀態變數 ......................................................................... 94
配置記憶體使用 ............................................................................................................. 94
每個連線的記憶體需求 ........................................................................................... 94
為作業系統保留記憶體 ........................................................................................... 95
InnoDB 緩衝池 .................................................................................................... 95
執行緒快取 ............................................................................................................. 96
配置 MySQL 的 I/O 行為 ............................................................................................ 97
InnoDB 事務日誌 ................................................................................................ 98
日誌緩衝區.......................................................................................................... 98
InnoDB 表空間 .................................................................................................. 100
其他 I/O 配置選項 ............................................................................................. 103
配置 MySQL 並發 ..................................................................................................... 103
安全設定 ................................................................................................................... 104
高級 InnoDB 設定 ..................................................................................................... 106
小結 .......................................................................................................................... 108
第 6 章 schema 設計與管理................................................109
選擇最佳化的數據類型 ................................................................................................ 109
整數類型 ............................................................................................................111
實數類型 ............................................................................................................111
字元串類型........................................................................................................ 112
日期和時間類型 ................................................................................................ 117
位壓縮數據類型 ................................................................................................ 119
JSON 數據類型 ................................................................................................. 121
選擇標識符........................................................................................................ 124
特殊數據類型 .................................................................................................... 126
MySQL schema 設計中的陷阱 .................................................................................. 127
太多的列 ........................................................................................................... 127
太多的聯接........................................................................................................ 127
全能的枚舉........................................................................................................ 127
變相的枚舉........................................................................................................ 128
NULL 不是虛擬值............................................................................................. 128
schema 管理 .............................................................................................................. 128
作為數據存儲平台一部分的 schema 管理 ......................................................... 129
小結 .......................................................................................................................... 135
第 7 章 創建高性能的索引....................................................136
索引基礎 ................................................................................................................... 136
索引的類型........................................................................................................ 137
使用索引的優點 ................................................................................................ 141
高性能的索引策略 .................................................................................................... 142
前綴索引和索引的選擇性 ................................................................................. 142
多列索引 ........................................................................................................... 145
選擇合適的索引列順序 ..................................................................................... 147
聚簇索引 ........................................................................................................... 150
覆蓋索引 ........................................................................................................... 157
使用索引掃描來做排序 ..................................................................................... 159
冗餘和重複索引 ................................................................................................ 161
未使用的索引 .................................................................................................... 164
維護索引和表 ........................................................................................................... 164
找到並修復損壞的表 ......................................................................................... 165
更新索引統計信息 ............................................................................................ 165
減少索引和數據的碎片 ..................................................................................... 167
小結 .......................................................................................................................... 168
第 8 章 查詢性能最佳化.........................................................170
為什麼查詢速度會慢 ................................................................................................ 170
慢查詢基礎 :最佳化數據訪問 ..................................................................................... 171
是否向資料庫請求了不需要的數據 .................................................................. 171
MySQL 是否在掃描額外的記錄 ........................................................................ 173
重構查詢的方式 ........................................................................................................ 177
一個複雜查詢還是多個簡單查詢 ...................................................................... 177
切分查詢 ........................................................................................................... 178
分解聯接查詢 .................................................................................................... 178
查詢執行的基礎 ........................................................................................................ 179
MySQL 的客戶端 / 伺服器通信協定 ................................................................. 180
查詢狀態 ........................................................................................................... 182
查詢最佳化處理 .................................................................................................... 183
查詢執行引擎 .................................................................................................... 196
將結果返回給客戶端 ......................................................................................... 197
MySQL 查詢最佳化器的局限性 ................................................................................... 197
UNION 的限制 .................................................................................................. 197
等值傳遞 ........................................................................................................... 198
並行執行 ........................................................................................................... 198
在同一個表中查詢和更新 ................................................................................. 198
最佳化特定類型的查詢 ................................................................................................ 199
最佳化聯接查詢 .................................................................................................... 201
使用 WITH ROLLUP 最佳化 GROUP BY ............................................................ 201
最佳化 LIMIT 和 OFFSET 子句 ............................................................................ 202
最佳化 SQL_CALC_FOUND_ROWS ................................................................... 203
最佳化 UNION 查詢 ............................................................................................. 204
小結 .......................................................................................................................... 204
第 9 章 複製....................................................................205
複製概述 ................................................................................................................... 205
複製如何工作 .................................................................................................... 207
複製原理 ................................................................................................................... 208
選擇複製格式 .................................................................................................... 208
全局事務標識符 ................................................................................................ 208
崩潰後的複製安全 ............................................................................................ 210
延遲複製 ........................................................................................................... 210
多執行緒複製........................................................................................................ 211
半同步複製........................................................................................................ 214
複製過濾器........................................................................................................ 214
複製切換 ................................................................................................................... 216
計畫內切換........................................................................................................ 216
計畫外切換........................................................................................................ 217
切換時的權衡 .................................................................................................... 217
複製拓撲 ................................................................................................................... 217
主動 / 被動模式 ................................................................................................. 218
主動 / 唯讀池模式 ............................................................................................. 219
不推薦的一些拓撲架構 ..................................................................................... 220
複製管理和維護 ........................................................................................................ 223
複製監控 ........................................................................................................... 223
觀測複製延遲 .................................................................................................... 224
確定副本數據的一致性 ..................................................................................... 225
複製問題和解決方案 ................................................................................................ 226
源端二進制日誌損壞 ......................................................................................... 226
未配置伺服器 ID ............................................................................................... 227
臨時表丟失........................................................................................................ 227
沒有複製所有變更 ............................................................................................ 227
複製延遲過大 .................................................................................................... 228
來自源伺服器的超大數據包 ............................................................................. 229
磁碟空間耗盡 .................................................................................................... 229
複製的限制........................................................................................................ 229
小結 .......................................................................................................................... 230
第 10 章 備份與恢復..........................................................231
為什麼要備份 ........................................................................................................... 232
定義恢復需求 ........................................................................................................... 233
設計 MySQL 備份方案 ............................................................................................. 234
線上備份還是離線備份 ..................................................................................... 235
邏輯備份還是裸檔案備份 ................................................................................. 236
備份什麼 ........................................................................................................... 238
增量備份和差異備份 ......................................................................................... 239
複製 ................................................................................................................... 240
管理和備份二進制日誌............................................................................................. 241
備份和恢復工具 ........................................................................................................ 241
MySQL Enterprise Backup ................................................................................ 241
Percona XtraBackup .......................................................................................... 242
mydumper .......................................................................................................... 242
mysqldump ........................................................................................................ 242
備份數據 ................................................................................................................... 242
邏輯 SQL 備份 .................................................................................................. 242
檔案系統快照 .................................................................................................... 244
Percona XtraBackup .......................................................................................... 249
從備份中恢複數據 .................................................................................................... 252
恢復邏輯備份 .................................................................................................... 253
從快照中恢復 .................................................................................................... 254
使用 Percona XtraBackup 進行恢復 .................................................................. 255
原始檔案恢復後啟動 MySQL ........................................................................... 256
小結 .......................................................................................................................... 256
第 11 章 擴展 MySQL.......................................................258
什麼是可擴展性 ........................................................................................................ 258
讀限制與寫限制工作負載 ......................................................................................... 260
理解工作負載 .................................................................................................... 260
讀限制工作負載 ................................................................................................ 261
寫限制工作負載 ................................................................................................ 261
功能拆分 ................................................................................................................... 262
使用讀池擴展讀 ........................................................................................................ 262
管理讀池的配置 ................................................................................................ 264
讀池健康檢查 .................................................................................................... 265
選擇負載均衡器算法 ......................................................................................... 266
排隊機制 ................................................................................................................... 267
使用分片擴展寫 ........................................................................................................ 268
選擇切分方案 .................................................................................................... 269
多個分片鍵........................................................................................................ 270
跨分片查詢........................................................................................................ 271
Vitess ................................................................................................................. 272
ProxySQL .......................................................................................................... 275
小結 .......................................................................................................................... 279
第 12 章 雲端的 MySQL....................................................280
託管 MySQL ............................................................................................................. 280
Amazon Aurora for MySQL ............................................................................... 281
GCP Cloud SQL ................................................................................................. 283
虛擬機上的 MySQL .................................................................................................. 284
雲上的機器類型 ................................................................................................ 284
選擇正確的機器類型 ......................................................................................... 285
選擇正確的磁碟類型 ......................................................................................... 286
額外的建議........................................................................................................ 287
小結 .......................................................................................................................... 289
第 13 章 MySQL 的合規性.................................................291
什麼是合規性 ........................................................................................................... 291
服務組織控制類型 2.......................................................................................... 292
薩班斯 - 奧克斯利法案 ..................................................................................... 292
支付卡行業數據安全標準 ................................................................................. 292
健康保險可攜帶性和責任法案 .......................................................................... 292
聯邦風險和授權管理計畫 ................................................................................. 293
通用數據保護條例 ............................................................................................ 293
Schrems II ......................................................................................................... 293
建立合規控制體系 .................................................................................................... 294
機密信息管理 .................................................................................................... 294
角色與數據分離 ................................................................................................ 297
跟蹤變更 ........................................................................................................... 297
備份和恢復過程 ................................................................................................ 302
小結 .......................................................................................................................... 304
附錄 A 升級 MySQL.........................................................305
附錄 B Kubernetes 上的 MySQL.......................................310
作者簡介
Silvia Botros是Twilio的高級首席工程師。在SendGrid工作期間,她幫助部署和維護了各種MySQL數據存儲,這些數據存儲支持郵件管道和SendGrid提供的其他產品,並推動MySQL設計從開始到生產。
Jeremy Tinley是Etsy的高級職員工程師,擁有超過20年的MySQL經驗。在他的職業生涯中,他管理了成千上萬個MySQL實例,著眼於可用性、可靠性和運營效率。
譯者簡介
寧海元有超過十年的資料庫管理經驗,從最初的SQLServer 2000到Oracle再到MySQL,擅長資料庫高可用架構、性能最佳化和故障診斷。專注於無線數據領域。網路常用名NinGoo,
周振興畢業於北京師範大學數學系,2009年開始負責MySQL運維管理工作,有豐富的MySQL性能最佳化、Troubleshooting經驗,對MySQL主要模組的實現和原理有深入的研究,對系統架構、高可用環境規劃都有深入理解。
張新銘,雲掣資深資料庫專家,網路常用名俊達,曾任淘寶、支付寶DBA,全程參與淘寶核心業務系統底層存儲系統改造,參與建設支付寶MySQL標準化運維體系。對於資料庫體系結構和運作原理有深入的理解,擅長大數據量和高訪問量OLTP資料庫的設計和最佳化。