出版時(shí)間:2010-1 出版社:清華大學(xué)出版社 作者:祝定澤 頁(yè)數(shù):369 字?jǐn)?shù):584000
Tag標(biāo)簽:無(wú)
前言
得知ISVE組的兩個(gè)人正在寫(xiě)MySQL內(nèi)核方面的書(shū)時(shí),感覺(jué)很驚訝。的確,Sun中國(guó)工程研究院的人寫(xiě)書(shū)揭示軟件內(nèi)核,是一件非常值得注意的事情。幾年前,我們已對(duì)MySQL的發(fā)展有所關(guān)注。從Sun收購(gòu)MySQL至今,MySQL仍然是最受歡迎的開(kāi)源數(shù)據(jù)庫(kù)軟件。開(kāi)源、免費(fèi)的MySQL,讓你可以用近乎零成本建立容量巨大的數(shù)據(jù)庫(kù)或者網(wǎng)上交易系統(tǒng),再加上Sun和無(wú)數(shù)社區(qū)精英的技術(shù)支持,不風(fēng)靡都很難!但這些年來(lái),MySQL中文資料較為匱乏,基本上處在初、中級(jí)的水準(zhǔn),缺乏足夠的深度。人們對(duì)該軟件往往知其然而不知其所以然。這導(dǎo)致了在中國(guó)MySQL數(shù)據(jù)庫(kù)高級(jí)人才相對(duì)較少?!禡ySQL核心內(nèi)幕》這本書(shū)是研究MySQL內(nèi)核的絕佳指導(dǎo)資料,真正做到了“授人以漁”。打開(kāi)MySQL的源代碼稍作觀察,便可發(fā)現(xiàn)其規(guī)模之大,有如阿房宮——“覆壓三百余里,隔離天日”;其關(guān)系錯(cuò)綜復(fù)雜,可謂“廊腰縵回,檐牙高啄,各抱地勢(shì),勾心斗角”。這無(wú)疑給想深入理解MySQL的人士出了一個(gè)難題。在《MySQL核心內(nèi)幕》這本書(shū)中,作者將MySQL分而治之,將復(fù)雜的MySQL內(nèi)核瞬間瓦解成多個(gè)功能子系統(tǒng)。每一章中,作者抽絲剝繭,化解理解子系統(tǒng)的各個(gè)難點(diǎn)。所以,你面對(duì)的不再僅僅是赤裸裸的代碼,而是真正能雅俗共賞的設(shè)計(jì)藝術(shù)。在讀書(shū)的同時(shí),一定要親身實(shí)踐:理解內(nèi)核某部分的捷徑就是對(duì)它做出修改,這樣才能越過(guò)代碼本身看到內(nèi)核的深層機(jī)理。讀者帶著一份耐心、一份執(zhí)著,闖過(guò)一道道難關(guān),直到閱讀完本書(shū)的最后一章時(shí),會(huì)有“驀然回首,那人卻在燈火闌珊處”的欣喜感覺(jué)!相信在本書(shū)的帶領(lǐng)下,中文地區(qū)MySQL用戶和支持者的水平能夠更上一層樓。
內(nèi)容概要
本書(shū)由Sun中國(guó)工程院的MySQL專家講解MySQL內(nèi)核設(shè)計(jì)和實(shí)現(xiàn)。作者對(duì)MySQL分而治之,將復(fù)雜的MySQL內(nèi)核劃分成多個(gè)功能子系統(tǒng),從而化解了理解子系統(tǒng)的各個(gè)難點(diǎn)。 本書(shū)共分12章。第1章介紹MySQL的歷史淵源。第2章介紹MySQL數(shù)據(jù)庫(kù)的架構(gòu)。第3章深入了解MySQL源代碼,第4章解釋關(guān)鍵的類和算法。從第5章開(kāi)始直到最后,按各子系統(tǒng)進(jìn)行講解,內(nèi)容包括連接和網(wǎng)絡(luò)系統(tǒng)、服務(wù)器線程和資源管理、查詢解析與優(yōu)化器、安全管理系統(tǒng)、存儲(chǔ)引擎接口詳解與實(shí)踐、經(jīng)典存儲(chǔ)引擎、日志功能及實(shí)踐分析和其他子系統(tǒng)。 配書(shū)光盤中提供了相關(guān)的MySQL源代碼。 本書(shū)適合對(duì)內(nèi)核編程設(shè)計(jì)感興趣的技術(shù)人員和開(kāi)發(fā)者以及在學(xué)習(xí)、工作中使用MySQL數(shù)據(jù)庫(kù)的各類技術(shù)人員閱讀。由于主要內(nèi)容均涉及到MySQL內(nèi)核源代碼,所以學(xué)習(xí)者應(yīng)當(dāng)具備C/C++預(yù)備知識(shí)。
作者簡(jiǎn)介
祝定澤,英文名“Hironics”,常用網(wǎng)名也為此。 Sun MySQL架構(gòu)師,一致關(guān)注MySQL的在國(guó)內(nèi)的成長(zhǎng)與應(yīng)用。幾位作者共同運(yùn)維MySQL技術(shù)網(wǎng)站http://www.mysqlsystems.com,Hironics經(jīng)常供稿于InfoQ。Hironics擁有MySQL的全部認(rèn)證:CMA、CMDEV、CMDBA和CMCDBA。
書(shū)籍目錄
第1章 MySQL的前世今生 1.1 MySQL的歷史 1.2 存儲(chǔ)引擎 1.3 MySQL市場(chǎng) 1.4 后話 第2章 數(shù)據(jù)庫(kù)系統(tǒng)的立體視圖 2.1 數(shù)據(jù)庫(kù)系統(tǒng)架構(gòu) 2.2 數(shù)據(jù)庫(kù)系統(tǒng)的分類 2.2.1 面向?qū)ο笮蛿?shù)據(jù)庫(kù) 2.2.2 關(guān)系型數(shù)據(jù)庫(kù) 2.2.3 對(duì)象關(guān)系型數(shù)據(jù)庫(kù) 2.3 關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)架構(gòu) 2.3.1 客戶端應(yīng)用程序 2.3.2 查詢接口 2.3.3 查詢語(yǔ)句處理 2.3.4 查詢優(yōu)化 2.3.5 語(yǔ)句執(zhí)行 2.3.6 讀寫(xiě)文件 2.3.7 模塊協(xié)作 2.3.8 RDBMS的層次結(jié)構(gòu) 2.4 MySQL數(shù)據(jù)庫(kù)系統(tǒng) 2.4.1 MySQL數(shù)據(jù)庫(kù)系統(tǒng)架構(gòu) 2.4.2 子系統(tǒng)之間的聯(lián)系 2.4.3 MySQL子系統(tǒng)和代碼 2.5 小結(jié) 第3章 暢游源代碼 3.1 下載MySQL源代碼 3.1.1 Bazaar安裝 3.1.2 訪問(wèn)MySQL源代碼 3.2 源代碼目錄結(jié)構(gòu) 3.2.1 主要關(guān)鍵目錄 3.2.2 開(kāi)源社區(qū)貢獻(xiàn)的代碼 3.2.3 解讀sql/sql_delete.cc 3.3 MySQL內(nèi)核分析工具 3.3.1 編譯和安裝MySQL 3.3.2 調(diào)試MySQL 3.3.3 源代碼檢索工具 3.3.4 Doxyen分析源代碼 3.4 小結(jié) 第4章 核心類、庫(kù)函數(shù)和算法 4.1 核心類 4.1.1 線程類(THD) 4.1.2 Item類 4.1.3 表描述類- TABLE 4.1.4 FIELD類 4.2 函數(shù)庫(kù) 4.2.1 內(nèi)存操作函數(shù) 4.2.2 文件系統(tǒng)操作函數(shù) 4.2.3 哈希表操作 4.2.4 字符串操作 4.2.5 宏定義 4.3 核心算法 4.3.1 Bitmaps –位圖 4.3.2 表連接緩沖工作原理 4.3.3 MySQL排序?qū)崿F(xiàn) 4.3.4 字符集和校對(duì)規(guī)則 4.4 小結(jié) 第5章 連接和網(wǎng)絡(luò)系統(tǒng) 5.1 MySQL NET協(xié)議 5.1.1 協(xié)議和操作系統(tǒng)協(xié)議棧 5.2 網(wǎng)絡(luò)包格式 5.2.1 Null結(jié)尾字符串和帶長(zhǎng)度標(biāo)識(shí)字符串 5.2.2 網(wǎng)絡(luò)包頭部格式 5.3 客戶端發(fā)送的包 5.3.1 客戶端認(rèn)證包 5.3.2 命令包(Command) 5.4 服務(wù)器端發(fā)送的包 5.4.1 握手初始化包 5.4.2 結(jié)果包分類 5.4.3 OK包 5.4.4 ERROR包 5.4.5 結(jié)果集包 5.5 小結(jié) 第6章 服務(wù)器線程和資源管理 6.1 線程還是進(jìn)程 6.1.1 線程與進(jìn)程的比較 6.2 MySQL線程問(wèn)題和解決方案 6.2.1 標(biāo)準(zhǔn)C函數(shù)調(diào)用 6.2.2 互斥鎖 6.2.3 線程同步 6.3 客戶端請(qǐng)求的處理 6.3.1 MySQL的啟動(dòng)過(guò)程 6.3.2 執(zhí)行流 6.4 類、API、變量和結(jié)構(gòu)體 6.5 MySQL內(nèi)存分配 6.5.1 內(nèi)存共享塊 6.5.2 線程內(nèi)存區(qū)域(TMA) 6.5.3 MySQL如何實(shí)現(xiàn)內(nèi)存分配 6.6 小結(jié) 第7章 查詢解析與優(yōu)化器 7.1 MySQL解析器 7.1.1 詞法分析程序 7.1.2 語(yǔ)法分析器 7.1.3 幾個(gè)關(guān)鍵類 7.2 查詢優(yōu)化器 7.2.1 傳統(tǒng)優(yōu)化算法 7.2.2 MySQL的查詢算法 7.3 小結(jié) 第8章 安全管理系統(tǒng) 8.1 賬號(hào)認(rèn)證 8.1.1 賬號(hào)定義 8.1.2 身份審核 8.1.3 具體優(yōu)先原則 8.2 權(quán)限控制 8.2.1 系統(tǒng)權(quán)限表 8.2.2 權(quán)限審核 8.2.3 權(quán)限級(jí)別 8.3 安全部署 8.3.1 服務(wù)器系統(tǒng)安全 8.3.2 數(shù)據(jù)庫(kù)系統(tǒng)安全 8.4 小結(jié) 第9章 存儲(chǔ)引擎接口詳解與實(shí)踐 9.1 MySQL插件式存儲(chǔ)引擎體系結(jié)構(gòu) 9.1.1 基本流程 9.1.2 從源代碼文件開(kāi)始 9.1.3 意想不到的幫助 9.1.4 Handlerton 9.1.5 Handler類 9.1.6 Archive存儲(chǔ)引擎的簡(jiǎn)單分析 9.2 開(kāi)發(fā)我的存儲(chǔ)引擎——Lillian(模板剖析) 9.2.1 底層I/O類 9.2.2 Lillian_data類 9.2.3 Lillian_index類 9.3 開(kāi)發(fā)我的存儲(chǔ)引擎——Lillian(代碼編寫(xiě)) 9.3.1 階段一:初始化存儲(chǔ)引擎 9.3.2 階段二:表操作 9.3.3 階段三:讀寫(xiě)數(shù)據(jù) 9.3.4 階段四:修改、刪除數(shù)據(jù) 9.3.5 階段五:索引功能 9.4 小結(jié) 第10章 存儲(chǔ)引擎 10.1 MySQL元數(shù)據(jù)文件——frm 10.2 MyISAM存儲(chǔ)引擎 10.2.1 MyISAM的架構(gòu) 10.2.2 數(shù)據(jù)文件(.MYD) 10.2.3 索引文件(.MYI) 10.3 InnoDB存儲(chǔ)引擎 10.3.1 InnoDB的宗旨和主要功能特性 10.3.2 InnoDB的架構(gòu)和代碼布局 10.3.3 InnoDB 文件格式 10.3.4 InnoDB 記錄結(jié)構(gòu) 10.3.5 InnoDB頁(yè)結(jié)構(gòu) 10.4 小結(jié) 第11章 MySQL日志功能及實(shí)現(xiàn)分析 11.1 錯(cuò)誤日志 11.1.1 錯(cuò)誤日志功能介紹 11.1.2 錯(cuò)誤日志初始化 11.1.3 錯(cuò)誤日志的記錄實(shí)現(xiàn) 11.2 普通日志 11.2.1 普通日志功能介紹 11.2.2 普通日志的初始化 11.2.3 普通日志記錄功能實(shí)現(xiàn) 11.3 慢查詢?nèi)罩? 11.3.1 慢查詢?nèi)罩竟δ芨攀? 11.3.2 慢查詢?nèi)罩镜某跏蓟? 11.3.3 慢查詢?nèi)罩镜膶?shí)現(xiàn) 11.4 二進(jìn)制日志 11.4.1 二進(jìn)制日志功能介紹 11.4.2 二進(jìn)制日志的初始化 11.4.3 二進(jìn)制日志的實(shí)現(xiàn) 11.5 小結(jié) 第12章 其他子系統(tǒng) 12.1 復(fù)制功能(Replication)子系統(tǒng) 12.1.1 Replication基礎(chǔ)架構(gòu)描述 12.1.2 Replication實(shí)現(xiàn)原理簡(jiǎn)述 12.1.3 Replication復(fù)制線程 12.1.4 Replication功能文件 12.1.5 Replication子系統(tǒng)組成 12.1.6 Replication原理剖析 12.1.7 小結(jié) 12.2 錯(cuò)誤消息子系統(tǒng) 12.2.1 錯(cuò)誤消息的實(shí)現(xiàn)原理 12.2.2 錯(cuò)誤消息的一致性 12.2.3 不同版本下錯(cuò)誤消息的添加方法 12.2.4 小結(jié) 附錄一 Bazaar入門指南 附錄二 MySQL源碼分布縱覽 參考文獻(xiàn)
章節(jié)摘錄
插圖:第1章 MySQL的前世今生1.2 存儲(chǔ)引擎MySQL的獨(dú)到之處——插件式存儲(chǔ)引擎(Pluggable Storage Engine),可謂將數(shù)據(jù)庫(kù)理論發(fā)揮得淋漓盡致,完美地映射了數(shù)據(jù)庫(kù)的外模式和內(nèi)模式理論。MySQL存儲(chǔ)類別的粒度小到每個(gè)表,用戶可以最大程度地利用各種引擎的優(yōu)點(diǎn),又避免了它的缺點(diǎn)。相對(duì)于其他數(shù)據(jù)庫(kù)系統(tǒng)往往無(wú)法選擇存儲(chǔ)引擎的現(xiàn)實(shí),MySQL能夠滿足多方面的需求。如數(shù)據(jù)庫(kù)倉(cāng)庫(kù)市場(chǎng),嵌入式數(shù)據(jù)庫(kù)等。IT詞典:內(nèi)模式和外模式為了有效地組織和管理數(shù)據(jù),提高數(shù)據(jù)庫(kù)的邏輯獨(dú)立性和物理獨(dú)立性,人們?yōu)閿?shù)據(jù)庫(kù)設(shè)計(jì)了一個(gè)嚴(yán)謹(jǐn)?shù)捏w系結(jié)構(gòu),數(shù)據(jù)庫(kù)領(lǐng)域公認(rèn)的標(biāo)準(zhǔn)結(jié)構(gòu)是三級(jí)模式結(jié)構(gòu),它包括外模式、模式和內(nèi)模式。數(shù)據(jù)庫(kù)結(jié)構(gòu)分為三級(jí):面向用戶或應(yīng)用程序員的用戶級(jí)、面向建立和維護(hù)數(shù)據(jù)庫(kù)人員的概念級(jí)、面向系統(tǒng)程序員的物理級(jí)。用戶級(jí)對(duì)應(yīng)外模式,概念級(jí)對(duì)應(yīng)模式,物理級(jí)對(duì)應(yīng)內(nèi)模式,使不同級(jí)別的用戶對(duì)數(shù)據(jù)庫(kù)形成不同的視圖。所謂視圖,就是指觀察、認(rèn)識(shí)和理解數(shù)據(jù)的范圍、角度和方法,是數(shù)據(jù)庫(kù)在用戶方面看到的特征,很顯然,不同層次(級(jí)別)的用戶所"看到''的數(shù)據(jù)庫(kù)是不相同的。當(dāng)前市場(chǎng)上主流的數(shù)據(jù)庫(kù)系統(tǒng)都是按行進(jìn)行存儲(chǔ)的,但這類存儲(chǔ)引擎存在不少缺陷。下面用一個(gè)例子來(lái)說(shuō)明按列存儲(chǔ)的存儲(chǔ)引擎。這個(gè)例子將說(shuō)明按列存儲(chǔ)在某些情況下在性能上是優(yōu)于按行存儲(chǔ)的。表1-2是一個(gè)存儲(chǔ)員工部分信息的表T,包含用戶ID(empid),姓名域(lastname, firstname)和工資(salary)。
媒體關(guān)注與評(píng)論
當(dāng)初聽(tīng)說(shuō)ISVE組的兩個(gè)人正在寫(xiě)MySQL內(nèi)核方面的書(shū),感覺(jué)非常詫異。不曾想SUN中國(guó)工程研究院的人也有心寫(xiě)內(nèi)核方面的書(shū)。 如今當(dāng)這本書(shū)完整的展現(xiàn)在我面前時(shí),我確定他們不是在開(kāi)玩笑。但這些年來(lái),MySQL中文資料較為匱乏,基本處在初、中級(jí)的水準(zhǔn),缺乏足夠的深度。人們往往知其然而不知其所以然。這導(dǎo)致了在中國(guó) MySQL 數(shù)據(jù)庫(kù) 高級(jí)人才相對(duì)較少。《MySQL核心內(nèi)幕》這本書(shū)是研究MySQL內(nèi)核的絕佳指導(dǎo)資料,真正做到了“授人以漁”。 ——Kevin Song——Sun中國(guó)工程院院長(zhǎng) MySQL在業(yè)界被譽(yù)為世界上最流行的開(kāi)源數(shù)據(jù)庫(kù),它提供了成本核算的數(shù)據(jù)庫(kù)管理系統(tǒng)的可行性新方案。Sun收購(gòu)MySQL的開(kāi)源業(yè)務(wù)通過(guò)給客戶提供高品質(zhì)的服務(wù)提供經(jīng)驗(yàn)豐富的技術(shù)支持工程師。要了解源代碼水平的全部細(xì)節(jié)和好處,工程師們要了解MySQL內(nèi)核的基本原理 。我相信這本書(shū)完成了這項(xiàng)任務(wù),祝定澤,一個(gè)有成就的MySQL專家,幫助工程師和讀者了解MySQL的哲學(xué)和設(shè)計(jì)。享受開(kāi)放源碼的自由世界。 讓我們慶祝這種可能性! ——亞太區(qū)首席MySQL顧問(wèn) 梶山隆輔 作為一名開(kāi)發(fā)人員,不應(yīng)該只限于使用工具,而應(yīng)該去了解其原理及本質(zhì)。了解一個(gè)工具原理最好的方法莫過(guò)于從源代碼著手。《MySQL 核心內(nèi)幕》為想要了解MySQL核心機(jī)理的國(guó)內(nèi)開(kāi)發(fā)人員打開(kāi)了一扇門,作者通過(guò)理論、實(shí)踐相結(jié)合,對(duì)系統(tǒng)架構(gòu)及核心代碼進(jìn)行了詳盡的闡述,本書(shū)對(duì)于熱愛(ài)MySQL開(kāi)源軟件,同時(shí)喜歡刨根問(wèn)底的技術(shù)人員是一本必看的好書(shū)。 ——金融界架構(gòu)師 王志剛 《MySQL 核心內(nèi)幕》是國(guó)內(nèi)第一本解析MySQL源代碼的著作,深刻揭示了 MySQL的內(nèi)部機(jī)理、闡述了MySQL各子系統(tǒng)的關(guān)聯(lián)、并實(shí)例編寫(xiě)了自定義存儲(chǔ)引擎,相信從事MySQL相關(guān)工作的技術(shù)人員可從中受益。 ——百度高級(jí)DBA 吳詩(shī)展
編輯推薦
《My SQL核心內(nèi)幕》:新一輪MySQL熱浪襲來(lái),翻開(kāi)最新GA的MySQL源碼,國(guó)內(nèi)首個(gè)開(kāi)源的MySQL存儲(chǔ)引擎,跟蹤Sun收購(gòu)MySQL后的動(dòng)態(tài)變化。國(guó)內(nèi)首次披露的 MySQL 內(nèi)核視頻講解,國(guó)內(nèi)首款開(kāi)源MySQL存儲(chǔ)引擎Lillian的代碼,MySQL Bazaar中文分析結(jié)果,更多參考文檔和資源。如果您是一名有著強(qiáng)烈使命感的IT技術(shù)高人……抑或是一名才華橫溢的設(shè)計(jì)師……如果您有按捺不住的創(chuàng)作沖動(dòng)……如果您對(duì)市場(chǎng)上的圖書(shū)有著諸多無(wú)奈……如果您打算潛心創(chuàng)作一本“永垂不朽”的IT圖書(shū)……
圖書(shū)封面
圖書(shū)標(biāo)簽Tags
無(wú)
評(píng)論、評(píng)分、閱讀與下載
250萬(wàn)本中文圖書(shū)簡(jiǎn)介、評(píng)論、評(píng)分,PDF格式免費(fèi)下載。 第一圖書(shū)網(wǎng) 手機(jī)版