高性能 MySQL, 4/e (High Performance MySQL: Proven Strategies for Operating at Scale, 4/e)

Botros, Silvia, Tinley, Jeremy 寧海元,周振興,張新銘

買這商品的人也買了...

商品描述

《高性能MySQL(第3版)》是MySQL 領域的極佳之作,擁有廣泛的影響力。第4版更新了大量的內容,全書共分為16章和6 個附錄,內容涵蓋MySQL架構和歷史,基準測試和性能剖析,數據庫軟硬件性能優化,復制、備份和恢復,高可用與高可擴展性,以及雲端的MySQL和MySQL相關工具等方面的內容。每一章都是相對獨立的主題,讀者可以有選擇性地單獨閱讀。《高性能MySQL(第4版)》不但適合數據庫管理員(DBA)閱讀,也適合開發人員參考學習。不管是數據庫新手還是專家,相信都能從本書有所收獲。

目錄大綱

序................................................................................. 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 優化 COUNT() 查詢 .......................................................................................... 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 ........................................................................................... 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