發表於2024-11-10
書[0名0]: | MySQL技術內幕:In[0no0]DB存儲引擎([0第0]2版)|3767802 |
圖書定價: | 79元 |
圖書作者: | 薑承堯 |
齣版社: | 機械工業齣版社 |
齣版日期: | 2013/5/1 0:00:00 |
ISBN號: | 9787111422068 |
開本: | 16開 |
頁數: | 424 |
版次: | 2-1 |
作者簡介 |
薑承堯(David Jiang),資深MySQL數據庫專傢,擅長於數據庫的故障診斷、性能調[0優0]、容災處理、高可用和高擴展研究,同時一直緻力於MySQL數據庫底層實現原理的研究和探索。此外,對高性能數據庫和數據倉庫也有深刻而[0獨0]到的理解。曾為MySQL編寫瞭許多開源工具和性能擴展補丁,如廣受好[0評0]的In[0no0]DB引擎二級緩存項目。現任網易杭州研究院技術經理一職,負責MySQL數據庫的內核開發,參與設計與開發MySQL數據庫在網易雲環境中的應用。曾擔任久遊網數據庫工程部經理,曾[0領0]導並參與瞭多個[0大0]型核心數據庫的設計、實施、管理和維護,實戰經驗非常豐富。活躍於開源數據庫以及開源軟件[0領0]域,是著[0名0]開源社區ChinaUnix MySQL版塊的版主,熱衷於與網友分享自己的心得和體[0會0],深受社區歡迎。 除本書外,他還撰寫瞭《MySQL技術內幕:SQL編程》,是本書的姊妹篇,頗受好[0評0]。 |
內容簡介 |
《MySQL技術內幕:In[0no0]DB存儲引擎([0第0]2版)》由[0國0]內資深MySQL專傢親自執筆,[0國0]內外多位數據庫專傢聯袂推薦。作為[0國0]內一本關於In[0no0]DB的專著,本書的[0第0]1版廣受好[0評0],[0第0]2版不僅針對新的MySQL 5.6對相關內容進行瞭全麵的補充,還根據廣[0大0]讀者的反饋意見對[0第0]1版中存在的不足進行瞭完善,全書[0大0]約重寫瞭50%的內容。本書從源代碼的角度深度解析瞭In[0no0]DB的體係結構、實現原理、工作機製,並給齣瞭[0大0]量佳實踐,能幫助你係統而深入地掌握In[0no0]DB,更重要的是,它能為你設計管理高性能、高可用的數據庫係統提供的指導。 全書一共10章,[0首0]先宏觀地介紹瞭MySQL的體係結構和各種常見的存儲引擎以及它們之間的比較;接著以In[0no0]DB的內部實現為切入點,逐一詳細講解瞭In[0no0]DB存儲引擎內部的各個功能模塊的實現原理,包括In[0no0]DB存儲引擎的體係結構、內存中的數據結構、基於In[0no0]DB存儲引擎的錶和頁的物理存儲、索引與算[0法0]、文件、鎖、事務、備份與恢復,以及In[0no0]DB的性能調[0優0]等重要的[0知0]識;後對In[0no0]DB存儲引擎源代碼的編譯和調試做瞭介紹,對[0大0]傢閱讀和理解In[0no0]DB的源代碼有重要的指導意義。 《MySQL技術內幕:In[0no0]DB存儲引擎([0第0]2版)》適閤所有希望構建和管理高性能、高可用性的MySQL數據庫係統的開發者和DBA閱讀。 |
目錄 |
《MySQL技術內幕:In[0no0]DB存儲引擎([0第0]2版)》 推薦序 前言 [0第0]1章 MySQL體係結構和存儲引擎1 1.1 定義數據庫和實例1 1.2 MySQL體係結構3 1.3 MySQL存儲引擎5 1.3.1 In[0no0]DB存儲引擎6 1.3.2 MyISAM存儲引擎7 1.3.3 NDB存儲引擎7 1.3.4 Memory存儲引擎8 1.3.5 Archive存儲引擎9 1.3.6 Federated存儲引擎9 1.3.7 Maria存儲引擎9 1.3.8 其他存儲引擎9 1.4 各存儲引擎之間的比較10 1.5 連接MySQL13 1.5.1 TCP/IP13 1.5.2 命[0名0]管道和共享內存15 1.5.3 UNIX域套接字15 1.6 小結15 [0第0]2章 In[0no0]DB存儲引擎17 2.1 In[0no0]DB存儲引擎概述17 2.2 In[0no0]DB存儲引擎的版本18 2.3 In[0no0]DB體係架構19 2.3.1 後颱綫程19 2.3.2 內存22 2.4 Checkpoint技術32 2.5 Master Thread工作方式36 2.5.1 In[0no0]DB 1.0.x版本之前的Master Thread36 2.5.2 In[0no0]DB1.2.x版本之前的Master Thread41 2.5.3 In[0no0]DB1.2.x版本的Master Thread45 2.6 In[0no0]DB關鍵特性45 2.6.1 插入緩衝46 2.6.2 兩次寫53 2.6.3 自適應哈希索引55 2.6.4 異步IO57 2.6.5 刷新鄰接頁58 2.7 啓動、關閉與恢復58 2.8 小結61 [0第0]3章 文件62 3.1 參數文件62 3.1.1 什麼是參數63 3.1.2 參數類型64 3.2 日誌文件65 3.2.1 錯誤日誌66 3.2.2 慢查詢日誌67 3.2.3 查詢日誌72 3.2.4 二進製日誌73 3.3 套接字文件83 3.4 pid文件83 3.5 錶結構定義文件84 3.6 In[0no0]DB存儲引擎文件84 3.6.1 錶空間文件85 3.6.2 重做日誌文件86 3.7 小結90 [0第0]4章 錶91 4.1 索引組織錶91 4.2 In[0no0]DB邏輯存儲結構93 4.2.1 錶空間93 4.2.2 段95 4.2.3 區95 4.2.4 頁101 4.2.5 行101 4.3 In[0no0]DB行記錄格式102 4.3.1 Compact行記錄格式103 4.3.2 Redundant行記錄格式106 4.3.3 行溢齣數據110 4.3.4 Compressed和Dynamic行記錄格式117 4.3.5 CHAR的行結構存儲117 4.4 In[0no0]DB數據頁結構120 4.4.1 File Header121 4.4.2 Page Header122 4.4.3 Infimum和Supremum Records123 4.4.4 User Records和Free Space123 4.4.5 Page Directory124 4.4.6 File Trailer124 4.4.7 In[0no0]DB數據頁結構示例分析125 4.5 Named File Formats機製132 4.6 約束134 4.6.1 數據完整性134 4.6.2 約束的創建和查找135 4.6.3 約束和索引的區彆137 4.6.4 對錯誤數據的約束137 4.6.5 ENUM和SET約束139 4.6.6 觸發器與約束139 4.6.7 外鍵約束142 4.7 視圖144 4.7.1 視圖的作用144 4.7.2 物化視圖147 4.8 分區錶152 4.8.1 分區概述152 4.8.2 分區類型155 4.8.3 子分區168 4.8.4 分區中的NULL值172 4.8.5 分區和性能176 4.8.6 在錶和分區間交換數據180 4.9 小結182 [0第0]5章 索引與算[0法0]183 5.1 In[0no0]DB存儲引擎索引概述183 5.2 數據結構與算[0法0]184 5.2.1 二分查找[0法0]184 5.2.2 二叉查找樹和平衡二叉樹185 5.3 B+樹187 5.3.1 B+樹的插入操作187 5.3.2 B+樹的刪除操作190 5.4 B+樹索引191 5.4.1 聚集索引192 5.4.2 輔助索引196 5.4.3 B+樹索引的分裂200 5.4.4 B+樹索引的管理202 5.5 Cardinality值210 5.5.1 什麼是Cardinality210 5.5.2 In[0no0]DB存儲引擎的Cardinality統計212 5.6 B+樹索引的使用215 5.6.1 不同應用中B+樹索引的使用215 5.6.2 聯閤索引215 5.6.3 覆蓋索引218 5.6.4 [0優0]化器選擇不使用索引的情況219 5.6.5 索引提示221 5.6.6 Multi-Range Read[0優0]化223 5.6.7 Index Condition Pushdown(ICP)[0優0]化226 5.7 哈希算[0法0]227 5.7.1 哈希錶228 5.7.2 In[0no0]DB存儲引擎中的哈希算[0法0]229 5.7.3 自適應哈希索引230 5.8 全文檢索231 5.8.1 概述231 5.8.2 倒排索引232 5.8.3 In[0no0]DB全文檢索233 5.8.4 全文檢索240 5.9 小結248 [0第0]6章 鎖249 6.1 什麼是鎖249 6.2 lock與latch250 6.3 In[0no0]DB存儲引擎中的鎖252 6.3.1 鎖的類型252 6.3.2 一緻性非鎖定讀258 6.3.3 一緻性鎖定讀261 6.3.4 自增長與鎖262 6.3.5 外鍵和鎖264 6.4 鎖的算[0法0]265 6.4.1 行鎖的3種算[0法0]265 6.4.2 解決Phantom Problem269 6.5 鎖問題271 6.5.1 髒讀271 6.5.2 不可重復讀273 6.5.3 丟失更新274 6.6 阻塞276 6.7 死鎖278 6.7.1 死鎖的概念278 6.7.2 死鎖概率280 6.7.3 死鎖的示例281 6.8 鎖升級283 6.9 小結284 [0第0]7章 事務285 7.1 認識事務285 7.1.1 概述285 7.1.2 分類287 7.2 事務的實現294 7.2.1 redo294 7.2.2 undo305 7.2.3 purge317 7.2.4 group commit319 7.3 事務控製語句323 7.4 隱式提交的SQL語句328 7.5 對於事務操作的統計329 7.6 事務的隔離級彆330 7.7 分布式事務335 7.7.1 MySQL數據庫分布式事務335 7.7.2 內部XA事務340 7.8 不好的事務習慣341 7.8.1 在循環中提交341 7.8.2 使用自動提交343 7.8.3 使用自動迴滾344 7.9 長事務347 7.10 小結349 [0第0]8章 備份與恢復350 8.1 備份與恢復概述350 8.2 冷備352 8.3 邏輯備份353 8.3.1 mysqldump353 8.3.2 SELECT...INTO OUTFILE360 8.3.3 邏輯備份的恢復362 8.3.4 LOAD DATA INFILE362 8.3.5 mysqlimport364 8.4 二進製日誌備份與恢復366 8.5 熱備367 8.5.1 ibbackup367 8.5.2 XtraBackup368 8.5.3 XtraBackup實現增量備份370 8.6 快照備份372 8.7 復製376 8.7.1 復製的工作原理376 8.7.2 快照+復製的備份架構380 8.8 小結382 [0第0]9章 性能調[0優0]383 9.1 選擇閤適的CPU383 9.2 內存的重要性384 9.3 硬盤對數據庫性能的影響387 9.3.1 傳統機械硬盤387 9.3.2 固態硬盤387 9.4 閤理地設置RAID389 9.4.1 RAID類型389 9.4.2 RAID Write Back功能392 9.4.3 RAID配置工具394 9.5 操作係統的選擇397 9.6 不同的文件係統對數據庫性能的影響398 9.7 選擇閤適的基準測試工具399 9.7.1 sysbench399 9.7.2 mysql-tpcc405 9.8 小結410 [0第0]10章 In[0no0]DB存儲引擎源代碼的編譯和調試411 10.1 獲取In[0no0]DB存儲引擎源代碼411 10.2 In[0no0]DB源代碼結構413 10.3 MySQL 5.1版本編譯和調試In[0no0]DB源代碼415 10.3.1 Windows下的調試415 10.3.2 Linux下的調試418 10.4 cmake方式編譯和調試In[0no0]DB存儲引擎423 10.5 小結424 |