深入淺出MySQL 數據庫開發 優化與管理維護 第3版( 簡體 字) | |
作者:翟振興、張恒巖、崔春華、黃榮、董騏銘 | 類別:1. -> 資料庫 -> MySQL |
出版社:人民郵電出版社 | 3dWoo書號: 51717 詢問書籍請說出此書號! 有庫存 NT售價: 690 元 |
出版日:9/1/2019 | |
頁數:682 | |
光碟數:0 | |
站長推薦: | |
印刷:黑白印刷 | 語系: ( 簡體 字 ) |
ISBN:9787115515391 | 加入購物車 │加到我的最愛 (請先登入會員) |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社) | |
第 一部分 基礎篇
第 1章 MySQL的安裝與配置 2 1.1 MySQL的下載 2 1.1.1 在Windows平臺下下載MySQL 3 1.1.2 在Linux平臺下下載MySQL 3 1.2 MySQL的安裝 5 1.2.1 在Windows平臺下安裝MySQL 5 1.2.2 在Linux平臺下安裝MySQL 8 1.3 MySQL的配置 12 1.3.1 Windows平臺下配置MySQL 12 1.3.2 Linux平臺下配置MySQL 13 1.4 啟動和關閉MySQL服務 13 1.4.1 在Windows平臺下啟動和關閉MySQL服務 13 1.4.2 在Linux平臺下啟動和關閉MySQL服務 13 1.5 小結 14 第 2章 SQL基礎 15 2.1 SQL簡介 15 2.2 (My)SQL使用入門 15 2.2.1 SQL分類 15 2.2.2 DDL語句 16 2.2.3 DML語句 23 2.2.4 DCL語句 33 2.3 幫助的使用 34 2.3.1 按照層次看幫助 34 2.3.2 快速查閱幫助 35 2.4 查詢元數據信息 36 2.5 小結 37 第3章 MySQL支持的數據類型 38 3.1 數值類型 38 3.2 日期時間類型 43 3.3 字符串類型 49 3.3.1 CHAR和VARCHAR類型 50 3.3.2 BINARY和VARBINARY類型 51 3.3.3 ENUM類型 51 3.3.4 SET類型 52 3.4 JSON類型 52 3.5 小結 54 第4章 MySQL中的運算符 55 4.1 算術運算符 55 4.2 比較運算符 56 4.3 邏輯運算符 59 4.4 位運算符 60 4.5 運算符的優先級 61 4.6 小結 62 第5章 常用函數 63 5.1 字符串函數 63 5.2 數值函數 66 5.3 日期和時間函數 68 5.4 流程函數 71 5.5 JSON函數 73 5.5.1 創建JSON函數 74 5.5.2 查詢JSON函數 75 5.5.3 修改JSON的函數 79 5.5.4 查詢JSON元數據函數 81 5.5.5 JSON工具函數 83 5.6 窗口函數 86 5.6.1 ROW_NUMBER() 87 5.6.2 RANK()/DENSE_RANK() 89 5.6.3 PERCENT_RANK()/CUME_DIST() 89 5.6.4 NFILE(N) 90 5.6.5 NTH_VALUE(expr,N) 91 5.6.6 LAG(expr,N)/LEAD(expr,N) 91 5.6.7 FIRST_VALUE(expr)/LAST_VALUE(expr) 92 5.6.8 聚合函數作為窗口函數 93 5.7 其他常用函數 93 5.8 小結 95 第二部分 開發篇 第6章 表類型(存儲引擎)的選擇 98 6.1 MySQL存儲引擎概述 98 6.2 各種存儲引擎的特性 100 6.2.1 MyISAM 101 6.2.2 InnoDB 102 6.2.3 MEMORY 108 6.2.4 MERGE 109 6.2.5 TokuDB 111 6.3 如何選擇合適的存儲引擎 112 6.4 小結 113 第7章 選擇合適的數據類型 114 7.1 CHAR與VARCHAR 114 7.2 TEXT與BLOB 115 7.3 浮點數與定點數 118 7.4 日期類型選擇 120 7.5 小結 120 第8章 字符集 121 8.1 字符集概述 121 8.2 Unicode簡述 121 8.3 漢字及一些常見字符集 123 8.4 怎樣選擇合適的字符集 124 8.5 MySQL支持的字符集簡介 125 8.6 MySQL字符集的設置 126 8.6.1 服務器字符集和排序規則 126 8.6.2 數據庫字符集和排序規則 127 8.6.3 表字符集和排序規則 127 8.6.4 列字符集和排序規則 128 8.6.5 連接字符集和排序規則 128 8.7 字符集的修改步驟 129 8.8 小結 129 第9章 索引的設計和使用 130 9.1 索引概述 130 9.2 設計索引的原則 131 9.3 索引設計的誤區 132 9.4 索引設計的一般步驟 132 9.5 BTREE索引與HASH索引 133 9.6 索引在MySQL 8.0中的改進 134 9.6.1 不可見索引 134 9.6.2 倒序索引 135 9.7 小結 136 第 10章 開發常用數據庫對象 137 10.1 視圖 137 10.1.1 什么是視圖 137 10.1.2 視圖操作 137 10.1.3 創建或者修改視圖 137 10.1.4 刪除視圖 139 10.1.5 查看視圖 139 10.2 存儲過程和函數 140 10.2.1 什么是存儲過程和函數 141 10.2.2 存儲過程和函數的相關操作 141 10.2.3 創建、修改存儲過程或者函數 141 10.2.4 刪除存儲過程或者函數 144 10.2.5 查看存儲過程或者函數 144 10.2.6 變量的使用 146 10.2.7 定義條件和處理 146 10.2.8 光標的使用 148 10.2.9 流程控制 149 10.2.10 事件調度器 152 10.3 觸發器 155 10.3.1 創建觸發器 155 10.3.2 刪除觸發器 157 10.3.3 查看觸發器 157 10.3.4 觸發器的使用 158 10.4 小結 159 第 11章 事務控制和鎖定語句 160 11.1 LOCK TABLES和UNLOCK TABLES 160 11.2 事務控制 161 11.3 分布式事務的使用 166 11.3.1 分布式事務的原理 166 11.3.2 分布式事務的語法 166 11.3.3 存在的問題 168 11.4 小結 171 第 12章 SQL中的安全問題 172 12.1 SQL注入簡介 172 12.2 應用開發中可以采取的應對措施 173 12.2.1 PrepareStatement+Bind-Variable 173 12.2.2 使用應用程序提供的轉換函數 174 12.2.3 自己定義函數進行校驗 174 12.3 小結 175 第 13章 SQL Mode及相關問題 176 13.1 MySQL SQL Mode簡介 176 13.2 SQL Mode的常見功能 178 13.3 常用的SQL Mode 180 13.4 SQL Mode在遷移中如何使用 182 13.5 小結 183 第 14章 MySQL分區 184 14.1 分區概述 184 14.2 分區類型 185 14.2.1 RANGE分區 187 14.2.2 LIST 分區 188 14.2.3 COLUMNS 分區 189 14.2.4 HASH分區 192 14.2.5 KEY分區 195 14.2.6 子分區 196 14.2.7 MySQL分區處理NULL值的方式 197 14.3 分區管理 199 14.3.1 RANGE與LIST分區管理 199 14.3.2 HASH與KEY分區管理 205 14.3.3 交換分區 206 14.4 小結 208 第三部分 優化篇 第 15章 SQL優化 210 15.1 優化SQL語句的一般步驟 210 15.1.1 通過show status命令了解各種SQL的執行頻率 210 15.1.2 定位執行效率較低的SQL語句 211 15.1.3 通過EXPLAIN分析低效SQL的執行計劃 211 15.1.4 通過show profile分析SQL 216 15.1.5 通過trace分析優化器如何選擇執行計劃 219 15.1.6 確定問題并采取相應的優化措施 220 15.2 索引問題 220 15.2.1 索引的存儲分類 220 15.2.2 MySQL如何使用索引 222 15.2.3 查看索引使用情況 231 15.3 兩個簡單實用的優化方法 231 15.3.1 定期分析表和檢查表 232 15.3.2 定期優化表 233 15.4 常用SQL的優化 233 15.4.1 大批量插入數據 234 15.4.2 優化INSERT語句 235 15.4.3 優化ORDER BY語句 235 15.4.4 優化GROUP BY語句 239 15.4.5 優化JOIN操作 239 15.4.6 優化嵌套查詢 243 15.4.7 MySQL如何優化OR條件 245 15.4.8 優化分頁查詢 246 15.4.9 使用SQL提示 248 15.5 直方圖 250 15.5.1 什么是直方圖 250 15.5.2 直方圖的分類 251 15.5.3 直方圖實例應用 252 15.5.4 直方圖小結 256 15.6 使用查詢重寫 256 15.7 常用SQL技巧 259 15.7.1 正則表達式的使用 259 15.7.2 巧用RAND()提取隨機行 261 15.7.3 利用GROUP BY的WITH ROLLUP子句 262 15.7.4 用BIT GROUP FUNCTIONS做統計 263 15.7.5 數據庫名、表名大小寫問題 265 15.7.6 使用外鍵需要注意的問題 265 15.8 小結 266 第 16章 鎖問題 267 16.1 MySQL鎖概述 267 16.2 MyISAM表鎖 268 16.2.1 查詢表級鎖爭用情況 268 16.2.2 MySQL表級鎖的鎖模式 268 16.2.3 如何加表鎖 269 16.2.4 并發插入(Concurrent Inserts) 271 16.2.5 MyISAM的鎖調度 272 16.3 InnoDB鎖問題 273 16.3.1 背景知識 273 16.3.2 獲取InnoDB行鎖爭用情況 275 16.3.3 InnoDB的行鎖模式及加鎖方法 276 16.3.4 InnoDB行鎖實現方式 279 16.3.5 Next-Key鎖 283 16.3.6 恢復和復制的需要,對InnoDB鎖機制的影響 284 16.3.7 InnoDB在不同隔離級別下的一致性讀及鎖的差異 287 16.3.8 什么時候使用表鎖 288 16.3.9 關于死鎖 289 16.4 小結 294 第 17章 優化MySQL Server 296 17.1 MySQL體系結構概覽 296 17.2 MySQL內存管理及優化 298 17.2.1 內存優化原則 298 17.2.2 MyISAM內存優化 298 17.2.3 InnoDB內存優化 301 17.2.4 調整用戶服務線程排序緩存區 305 17.3 InnoDB log機制及優化 305 17.3.1 InnoDB重做日志 305 17.3.2 innodb_flush_log_at_trx_commit的設置 306 17.3.3 設置log file size,控制檢查點 307 17.3.4 調整innodb_log_buffer_size 308 17.4 調整MySQL并發相關的參數 308 17.4.1 調整max_connections,提高并發連接 308 17.4.2 調整back_log 309 17.4.3 調整table_open_cache 309 17.4.4 調整thread_cache_size 309 17.4.5 innodb_lock_wait_timeout的設置 309 17.5 持久化全局變量 309 17.6 使用資源組 310 17.7 小結 312 第 18章 磁盤I/O問題 313 18.1 使用固態硬盤 313 18.2 使用磁盤陣列 314 18.2.1 常見RAID級別及其特性 314 18.2.2 如何選擇RAID級別 315 18.3 虛擬文件卷或軟RAID 315 18.4 使用Symbolic Links分布I/O 315 18.5 禁止操作系統更新文件的atime屬性 316 18.6 調整I/O調度算法 316 18.7 RAID卡電池充放電問題 318 18.7.1 什么是RAID卡電池充放電 318 18.7.2 RAID卡緩存策略 319 18.7.3 如何應對RAID卡電池充放電帶來的I/O性能波動 321 18.8 NUMA架構優化 322 18.9 小結 325 第 19章 應用優化 326 19.1 優化數據表的設計 326 19.1.1 優化表的數據類型 326 19.1.2 通過拆分提高表的訪問效率 328 19.1.3 逆規范化 329 19.2 數據庫應用優化 330 19.2.1 使用連接池 330 19.2.2 減少對MySQL的訪問 330 19.2.3 負載均衡 331 19.3 小結 331 第 20章 PS/SYS數據庫 332 20.1 Performance Schema庫 332 20.1.1 如何開啟PS庫 332 20.1.2 PS庫的表 333 20.2 SYS 庫 335 20.2.1 SYS庫的對象 335 20.2.2 SYS對象的實際應用 336 20.3 小結 340 第 21章 故障診斷 341 21.1 故障診斷和處理的原則 341 21.2 故障處理一般流程 343 21.2.1 故障發現 343 21.2.2 故障定位 345 21.2.3 故障解決 346 21.3 典型故障案例 349 21.3.1 案例1 349 21.3.2 案例2 353 21.4 小結 356 第四部分 管理維護篇 第 22章 MySQL高級安裝和升級 358 22.1 Linux/UNIX平臺下的安裝 358 22.1.1 安裝包比較 358 22.1.2 安裝二進制包 359 22.1.3 安裝源碼包 359 22.1.4 參數設置方法 360 22.2 升級MySQL 361 22.3 小結 363 第 23章 MySQL中的常用工具 364 23.1 MySQL官方工具 364 23.1.1 mysql(客戶端連接工具) 364 23.1.2 mysqladmin(MySQL管理工具) 371 23.1.3 mysqlbinlog(日志管理工具) 371 23.1.4 mysqlcheck(表維護工具) 378 23.1.5 mysqldump(數據導出工具) 380 23.1.6 mysqlpump(并行的數據導出工具) 384 23.1.7 mysqlimport(數據導入工具) 385 23.1.8 mysqlshow(數據庫對象查看工具) 385 23.1.9 perror(錯誤代碼查看工具) 387 23.1.10 MySQL Shell 387 23.2 Percona工具包 390 23.2.1 pt-archiver(數據歸檔工具) 391 23.2.2 pt-config-diff(參數對比工具) 393 23.2.3 pt-duplicate-key-checker(檢查冗余索引工具) 394 23.2.4 pt-find(查找工具) 395 23.2.5 pt-heartbeat(監控主從延遲工具) 395 23.2.6 pt-kill(殺死會話工具) 397 23.2.7 pt-online-schema-change(在線修改表結構工具) 397 23.2.8 pt-query-digest(SQL分析工具) 399 23.2.9 pt-table-checksum(數據檢驗工具) 401 23.2.10 pt-table-sync(數據同步工具) 402 23.3 小結 403 第 24章 MySQL日志 404 24.1 錯誤日志 404 24.2 二進制日志 405 24.2.1 日志的位置和格式 405 24.2.2 日志的讀取 406 24.2.3 日志的刪除 407 24.2.4 日志的事件 411 24.2.5 日志閃回 412 24.3 查詢日志 415 24.3.1 日志的位置和格式 415 24.3.2 日志的讀取 416 24.4 慢查詢日志 416 24.4.1 文件位置和格式 416 24.4.2 日志的讀取 417 24.4.3 Anemometer簡介 419 24.5 小結 421 第 25章 備份與恢復 422 25.1 備份/恢復策略 422 25.2 邏輯備份和恢復 422 25.2.1 備份 423 25.2.2 完全恢復 425 25.2.3 基于時間點恢復 427 25.2.4 基于位置恢復 427 25.2.5 并行恢復 427 25.3 物理備份和恢復 428 25.3.1 冷備份和熱備份 428 25.3.2 MyISAM存儲引擎的熱備份 429 25.3.3 InnoDB存儲引擎的熱備份 429 25.4 表的導入和導出 438 25.4.1 導出 438 25.4.2 導入 442 25.5 小結 445 第 26章 MySQL權限與安全 446 26.1 MySQL權限管理 446 26.1.1 權限系統的工作原理 446 26.1.2 權限表的存取 446 26.1.3 賬號管理 449 26.2 MySQL安全問題 461 26.2.1 操作系統相關的安全問題 461 26.2.2 數據庫相關的安全問題 463 26.3 其他安全設置選項 471 26.3.1 密碼插件 471 26.3.2 safe-user-create 472 26.3.3 表空間加密 473 26.3.4 skip-grant-tables 474 26.3.5 skip-networking 474 26.3.6 skip-show-database 475 26.4 小結 475 第 27章 MySQL監控 476 27.1 如何選擇一個監控方案 476 27.1.1 選擇何種監控方式 476 27.1.2 如何選擇適合自己的監控工具 477 27.2 常用的網絡監控工具 477 27.2.1 Open-Falcon簡介 477 27.2.2 Nagios簡介 479 27.2.3 Zabbix簡介 480 27.2.4 幾種常見開源軟件比較 481 27.3 Zabbix 部署 481 27.3.1 Zabbix Server軟件安裝 482 27.3.2 Zabbix Server配置與啟動 482 27.3.3 配置Zabbix Web服務端 483 27.3.4 Zabbix Agent安裝和配置 485 27.3.5 PMP插件介紹和部署 486 27.3.6 Zabbix Web端操作 489 27.4 性能醫生orzdba 491 27.4.1 orzdba安裝 491 27.4.2 orzdba使用 492 27.5 小結 492 第 28章 MySQL常見問題和應用技巧 493 28.1 忘記MySQL的root密碼 493 28.2 數據目錄磁盤空間不足的問題 494 28.3 mysql.sock丟失后如何連接數據庫 495 28.4 從mysqldump文件抽取需要恢復的表 496 28.5 使用innobackupex備份恢復單表 497 28.6 分析BINLOG,找出寫的熱點表 498 28.7 在線DDL 499 28.8 小結 502 第 29章 自動化運維系統的開發 503 29.1 MySQL自動化運維背景 503 29.2 CMDB系統搭建 504 29.2.1 CMDB數據庫 504 29.2.2 批量管理系統 505 29.2.3 后臺API 511 29.3 任務調度系統 515 29.3.1 Celery安裝 515 29.3.2 Celery任務部署 516 29.3.3 Flower監控 518 29.4 客戶端搭建 519 29.4.1 Vue.js簡介 519 29.4.2 Vue項目搭建 520 29.5 自動化運維平臺實戰 525 29.5.1 搭建CMDB 525 29.5.2 搭建任務調度平臺 528 29.5.3 搭建客戶端 529 29.5.4 項目演示 532 29.6 小結 532 第五部分 架構篇 第30章 MySQL復制 534 30.1 復制概述 534 30.1.1 復制中的各類文件 536 30.1.2 3種復制方式 537 30.1.3 復制的4種常見架構 540 30.2 復制搭建 543 30.2.1 異步復制 543 30.2.2 多線程復制 547 30.2.3 增強半同步復制 553 30.3 GTID(Global Transaction Identifier) 558 30.3.1 格式與存儲 558 30.3.2 gtid_purged 561 30.3.3 復制搭建 565 30.3.4 主從切換 571 30.3.5 常見問題 572 30.4 主要復制啟動選項 576 30.4.1 log-slave-updates 576 30.4.2 read-only/super_read_only 576 30.4.3 指定復制的數據庫或者表 577 30.4.4 slave-skip-errors 579 30.5 日常管理維護 579 30.5.1 查看從庫復制狀態和進度 579 30.5.2 主從復制問題集錦 580 30.5.3 多主復制時的自增長變量沖突問題 582 30.5.4 如何提高復制的性能 584 30.6 小結 588 第31章 高可用架構 589 31.1 MHA架構 589 31.1.1 安裝部署MHA 591 31.1.2 應用連接配置 598 31.1.3 自動failover 605 31.1.4 網絡問題觸發的failover操作 614 31.1.5 手動failover 614 31.1.6 在線進行切換 615 31.1.7 修復宕掉的Master 617 31.2 MGR架構 617 31.2.1 安裝部署MGR 618 31.2.2 監控 625 31.2.3 primary成員切換 626 31.2.4 重要特性 628 31.2.5 常見問題 629 31.3 InnoDB Cluster 636 31.3.1 安裝部署 637 31.3.2 初始化MySQL Router 642 31.3.3 集群Metadata 643 31.3.4 集群成員角色切換 644 31.3.5 集群刪除/增加節點 646 31.3.6 重新加入節點 648 31.4 小結 649 第32章 MySQL中間件 650 32.1 MySQL Router 650 32.1.1 MySQL Router的安裝 651 32.1.2 MySQL Router的初始化 653 32.1.3 MySQL Router策略驗證 656 32.2 Cetus架構 658 32.2.1 Cetus的安裝配置 659 32.2.2 Cetus的使用 670 32.2.3 Cetus日志文件 674 32.2.4 Cetus的后端管理 675 32.2.5 Cetus的路由策略 678 32.2.6 常見問題 681 32.3 小結 682 《深入淺出MySQL:數據庫開發、優化與管理維護(第3版)》源自網易公司多位資深數據庫專家數年的經驗總結和MySQL數據庫的使用心得,在之前版本的基礎之上,基于MySQL 5.7版本進行了內容升級,同時也對MySQL 8.0的重要功能進行了介紹。除了對原有內容的更新之外,本書還新增了作者在高可用架構、數據庫自動化運維,以及數據庫中間件方面的實踐和積累。
《深入淺出MySQL:數據庫開發、優化與管理維護(第3版)》分為“基礎篇”“開發篇”“優化篇”“管理維護篇”和“架構篇”5個部分,共32章。基礎篇面向MySQL的初學者,介紹了MySQL的安裝與配置、SQL基礎、MySQL支持的數據類型、MySQL中的運算符、常用函數等內容。開發篇面向的是MySQL設計和開發人員,內容涵蓋了表類型(存儲引擎)的選擇、選擇合適的數據類型、字符集、索引的設計和使用、開發常用數據庫對象、事務控制和鎖定語句、SQL中的安全問題、SQL Mode及相關問題、MySQL分區等。優化篇針對的是開發人員和數據庫管理人員,內容包括SQL優化、鎖問題、優化MySQL Server、磁盤I/O問題、應用優化、PS/SYS數據庫、故障診斷等內容。管理維護篇適合數據庫管理員閱讀,介紹了MySQL高級安裝和升級、MySQL中的常用工具、MySQL日志、備份與恢復、MySQL權限與安全、MySQL監控、MySQL常見問題和應用技巧、自動化運維系統的開發等內容。架構篇主要面向高級數據庫管理人員和數據庫架構設計師,內容包括MySQL復制、高可用架構、MySQL中間件等內容。 《深入淺出MySQL:數據庫開發、優化與管理維護(第3版)》內容實用,覆蓋廣泛,講解由淺入深,還提供了大量來自一線的工作實例,進一步提升了本書的實戰性和可操作性。本書適合數據庫管理人員、數據庫開發人員、系統維護人員、數據庫初學者及其他數據庫從業人員閱讀,也適合用作大中專院校相關專業師生的參考用書和相關培訓機構的培訓教材。 |