预购商品
书目分类
特别推荐
深入淺出MySQL:數據庫開發、優化與管理維護(第3版)》源自網易公司多位數據庫專家數年的經驗總結和MySQL數據庫的使用心得,在之前版本的基礎之上,基於MySQL 5.7版本進行了內容升級,同時也對MySQL 8.0的重要功能進行了介紹。除了對原有內容的更新之外,本書還新增了作者在高可用架構、數據庫自動化運維,以及數據庫中介軟體方面的實踐和積累。 《深入淺出MySQL:數據庫開發、優化與管理維護(第3版)》分為“基礎篇”“開發篇”“優化篇”“管理維護篇”和“架構篇”5個部分,共32章。基礎篇面向MySQL的初學者,介紹了MySQL的安裝與配置、SQL基礎、MySQL支持的數據類型、MySQL中的運算子、常用函數等內容。開發篇面向的是MySQL設計和開發人員,內容涵蓋了表類型(存儲引擎)的選擇、選擇合適的數據類型、字元集、索引的設計和使用、開發常用數據庫物件、事務控制和鎖定語句、SQL中的安等
第一部分 基礎篇 第1章 MySQL的安裝與配置2 1.1MySQL的下載2 1.1.1在Windows平臺下下載MySQL3 1.1.2在Linux平臺下下載MySQL3 1.2MySQL的安裝5 1.2.1在Windows平臺下安裝MySQL5 1.2.2在Linux平臺下安裝MySQL8 1.3MySQL的配置12 1.3.1Windows平臺下配置MySQL12 1.3.2Linux平臺下配置MySQL13 1.4啟動和關閉MySQL服務13 1.4.1在Windows平臺下啟動和關閉MySQL服務13 1.4.2在Linux平臺下啟動和關閉MySQL服務13 1.5小結14 第2章 SQL基礎15 2.1SQL簡介15 2.2(My)SQL使用入門15 2.2.1SQL分類15 2.2.2DDL語句16 2.2.3DML語句23 2.2.4DCL語句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.1CHAR和VARCHAR類型50 3.3.2BINARY和VARBINARY類型51 3.3.3ENUM類型51 3.3.4SET類型52 3.4JSON類型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.5JSON函數73 5.5.1創建JSON函數74 5.5.2查詢JSON函數75 5.5.3修改JSON的函數79 5.5.4查詢JSON元數據函數81 5.5.5JSON工具函數83 5.6窗口函數86 5.6.1ROW_NUMBER()87 5.6.2RANK()/DENSE_RANK()89 5.6.3PERCENT_RANK()/CUME_DIST()89 5.6.4NFILE(N)90 5.6.5NTH_VALUE(expr,N)91 5.6.6LAG(expr,N)/LEAD(expr,N)91 5.6.7FIRST_VALUE(expr)/LAST_VALUE(expr)92 5.6.8聚合函數作為視窗函數93 5.7其他常用函數93 5.8小結95 第二部分 開發篇 第6章 表類型(存儲引擎)的選擇98 6.1MySQL存儲引擎概述98 6.2各種存儲引擎的特性100 6.2.1MyISAM101 6.2.2InnoDB102 6.2.3MEMORY108 6.2.4MERGE109 6.2.5TokuDB111 6.3如何選擇合適的存儲引擎112 6.4小結113 第7章 選擇合適的數據類型114 7.1CHAR與VARCHAR114 7.2TEXT與BLOB115 7.3浮點數與定點數118 7.4日期類型選擇120 7.5小結120 第8章 字元集121 8.1字元集概述121 8.2Unicode簡述121 8.3漢字及一些常見字元集123 8.4怎樣選擇合適的字元集124 8.5MySQL支援的字元集簡介125 8.6MySQL字元集的設置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.5BTREE索引與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.1LOCK TABLES和UNLOCK TABLES160 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.1SQL注入簡介172 12.2應用開發中可以採取的應對措施173 12.2.1PrepareStatement+Bind-Variable173 12.2.2使用應用程式提供的轉換函數174 12.2.3自己定義函數進行校驗174 12.3小結175 第13章 SQL Mode及相關問題176 13.1MySQL SQL Mode簡介176 13.2SQL Mode的常見功能178 13.3常用的SQL Mode180 13.4SQL Mode在遷移中如何使用182 13.5小結183 第14章 MySQL分區184 14.1分區概述184 14.2分區類型185 14.2.1RANGE分區187 14.2.2LIST 分區188 14.2.3COLUMNS 分區189 14.2.4HASH分區192 14.2.5KEY分區195 14.2.6子分區196 14.2.7MySQL分區處理NULL值的方式197 14.3分區管理199 14.3.1RANGE與LIST分區管理199 14.3.2HASH與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分析SQL216 15.1.5通過trace分析優化器如何選擇執行計畫219 15.1.6確定問題並採取相應的優化措施220 15.2索引問題220 15.2.1索引的存儲分類220 15.2.2MySQL如何使用索引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.7MySQL如何優化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.1MySQL鎖概述267 16.2MyISAM表鎖268 16.2.1查詢表級鎖爭用情況268 16.2.2MySQL表級鎖的鎖模式268 16.2.3如何加表鎖269 16.2.4併發插入(Concurrent Inserts)271 16.2.5MyISAM的鎖調度272 16.3InnoDB鎖問題273 16.3.1背景知識273 16.3.2獲取InnoDB行鎖爭用情況275 16.3.3InnoDB的行鎖模式及加鎖方法276 16.3.4InnoDB行鎖實現方式279 16.3.5Next-Key鎖283 16.3.6恢復和複製的需要,對InnoDB鎖機制的影響284 16.3.7InnoDB在不同隔離級別下的一致性讀及鎖的差異287 16.3.8什麼時候使用表鎖288 16.3.9關於鎖死289 16.4小結294 第17章 優化MySQL Server296 17.1MySQL體系結構概覽296 17.2MySQL記憶體管理及優化298 17.2.1記憶體優化原則298 17.2.2MyISAM記憶體優化298 17.2.3InnoDB記憶體優化301 17.2.4調整使用者服務執行緒排序緩存區305 17.3InnoDB log機制及優化305 17.3.1InnoDB重做日誌305 17.3.2innodb_flush_log_at_trx_commit的設置306 17.3.3設置log file size,控制檢查點307 17.3.4調整innodb_log_buffer_size308 17.4調整MySQL併發相關的參數308 17.4.1調整max_connections,提高併發連接308 17.4.2調整back_log309 17.4.3調整table_open_cache309 17.4.4調整thread_cache_size309 17.4.5innodb_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虛擬文件卷或軟RAID315 18.4使用Symbolic Links分佈I/O315 18.5禁止作業系統更新檔的atime屬性316 18.6調整I/O調度演算法316 18.7RAID卡電池充放電問題318 18.7.1什麼是RAID卡電池充放電318 18.7.2RAID卡緩存策略319 18.7.3如何應對RAID卡電池充放電帶來的I/O性能波動321 18.8NUMA架構優化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.1Performance Schema庫332 20.1.1如何開啟PS庫332 20.1.2PS庫的表333 20.2SYS 庫335 20.2.1SYS庫的對象335 20.2.2SYS物件的實際應用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案例1349 21.3.2案例2353 21.4小結356 第四部分 管理維護篇 第22章 MySQL不錯安裝和升級358 22.1Linux/UNIX平臺下的安裝358 22.1.1安裝包比較358 22.1.2安裝二進位包359 22.1.3安裝源碼包359 22.1.4參數設置方法360 22.2升級MySQL361 22.3小結363 第23章 MySQL中的常用工具364 23.1MySQL官方工具364 23.1.1mysql(用戶端連接工具)364 23.1.2mysqladmin(MySQL管理工具)371 23.1.3mysqlbinlog(日誌管理工具)371 23.1.4mysqlcheck(表維護工具)378 23.1.5mysqldump(數據匯出工具)380 23.1.6mysqlpump(並行的數據匯出工具)384 23.1.7mysqlimport(數據導入工具)385 23.1.8mysqlshow(數據庫物件查看工具)385 23.1.9perror(錯誤代碼查看工具)387 23.1.10MySQL Shell387 23.2Percona工具包390 23.2.1pt-archiver(數據歸檔工具)391 23.2.2pt-config-diff(參數對比工具)393 23.2.3pt-duplicate-key-checker(檢查冗餘索引工具)394 23.2.4pt-find(查找工具)395 23.2.5pt-heartbeat(監控主從延遲工具)395 23.2.6pt-kill(殺死會話工具)397 23.2.7pt-online-schema-change(線上修改表結構工具)397 23.2.8pt-query-digest(SQL分析工具)399 23.2.9pt-table-checksum(數據檢驗工具)401 23.2.10pt-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.3Anemometer簡介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.2MyISAM存儲引擎的熱備份429 25.3.3InnoDB存儲引擎的熱備份429 25.4表的導入和匯出438 25.4.1匯出438 25.4.2導入442 25.5小結445 第26章 MySQL許可權與安全446 26.1MySQL許可權管理446 26.1.1許可權系統的工作原理446 26.1.2許可權表的存取446 26.1.3帳號管理449 26.2MySQL安全問題461 26.2.1作業系統相關的安全問題461 26.2.2數據庫相關的安全問題463 26.3其他安全設置選項471 26.3.1密碼外掛程式471 26.3.2safe-user-create472 26.3.3表空間加密473 26.3.4skip-grant-tables474 26.3.5skip-networking474 26.3.6skip-show-database475 26.4小結475 第27章 MySQL監控476 27.1如何選擇一個監控方案476 27.1.1選擇何種監控方式476 27.1.2如何選擇適合自己的監控工具477 27.2常用的網路監控工具477 27.2.1Open-Falcon簡介477 27.2.2Nagios簡介479 27.2.3Zabbix簡介480 27.2.4幾種常見開源軟體比較481 27.3Zabbix 部署481 27.3.1Zabbix Server482 27.3.2Zabbix Server配置與啟動482 27.3.3配置Zabbix Web服務端483 27.3.4Zabbix Agent安裝和配置485 27.3.5PMP外掛程式介紹和部署486 27.3.6Zabbix Web端操作489 27.4性能醫生orzdba491 27.4.1orzdba安裝491 27.4.2orzdba使用492 27.5小結492 第28章 MySQL常見問題和應用技巧493 28.1忘記MySQL的root密碼493 28.2數據目錄磁碟空間不足的問題494 28.3mysql.sock丟失後如何連接數據庫495 28.4從mysqldump檔抽取需要恢復的表496 28.5使用innobackupex備份恢復單表497 28.6分析BINLOG,找出寫的熱點表498 28.7線上DDL499 28.8小結502 第29章 自動化運維系統的開發503 29.1MySQL自動化運維背景503 29.2CMDB系統搭建504 29.2.1CMDB數據庫504 29.2.2批量管理系統505 29.2.3後臺API511 29.3任務調度系統515 29.3.1Celery安裝515 29.3.2Celery任務部署516 29.3.3Flower監控518 29.4用戶端搭建519 29.4.1Vue.js簡介519 29.4.2Vue項目搭建520 29.5自動化運維平臺實戰525 29.5.1搭建CMDB525 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.23種複製方式537 30.1.3複製的4種常見架構540 30.2複製搭建543 30.2.1非同步複製543 30.2.2多執行緒複製547 30.2.3增強半同步複製553 30.3GTID(Global Transaction Identifier)558 30.3.1格式與存儲558 30.3.2gtid_purged561 30.3.3複製搭建565 30.3.4主從切換571 30.3.5常見問題572 30.4主要複製啟動選項576 30.4.1log-slave-updates576 30.4.2read-only/super_read_only576 30.4.3指定複製的數據庫或者表577 30.4.4slave-skip-errors579 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.1MHA架構589 31.1.1安裝部署MHA591 31.1.2應用連接配置598 31.1.3自動failover605 31.1.4網路問題觸發的failover操作614 31.1.5手動failover614 31.1.6線上進行切換615 31.1.7修復宕掉的Master617 31.2MGR架構617 31.2.1安裝部署MGR618 31.2.2監控625 31.2.3primary成員切換626 31.2.4重要特性628 31.2.5常見問題629 31.3InnoDB Cluster636 31.3.1安裝部署637 31.3.2初始化MySQL Router642 31.3.3集群Metadata643 31.3.4集群成員角色切換644 31.3.5集群刪除/增加節點646 31.3.6重新加入節點648 31.4小結649 第32章 MySQL中介軟體650 32.1MySQL Router650 32.1.1MySQL Router的安裝651 32.1.2MySQL Router的初始化653 32.1.3MySQL Router策略驗證656 32.2Cetus架構658 32.2.1Cetus的安裝配置659 32.2.2Cetus的使用670 32.2.3Cetus日誌檔674 32.2.4Cetus的後端管理675 32.2.5Cetus的路由策略678 32.2.6常見問題681 32.3小結682
翟振興,網易技術專家,畢業于清華大學軟體學院,2005年入職網易,經歷了網易多個核心系統的數據庫設計和運維工作,對高併發下的數據庫架構變遷有著深刻的理解,目前主要對自動化運維、大數據、NewSQL等新技術有著較多的興趣和研究。 張恒岩,網易技術經理,2010年畢業于北京科技大學,在網易DBA組工作9年,負責過網易內部多個核心數據庫的運維以及數據庫自動化運維系統的設計和開發。在數據庫架構設計、性能優化、故障診斷以及自動化運維等方面有豐富的經驗。 崔春華,網易DBA,有10多年的數據庫技術領域從業經驗,深刻理解數據庫原理並具有豐富的實戰經驗,擁有Oracle 9i OCP證等。
最近浏览商品
客服公告
热门活动
订阅电子报