出版时间:2010-1 出版社:清华大学出版社 作者:祝定泽 页数:369 字数:584000
Tag标签:无
前言
得知ISVE组的两个人正在写MySQL内核方面的书时,感觉很惊讶。的确,Sun中国工程研究院的人写书揭示软件内核,是一件非常值得注意的事情。几年前,我们已对MySQL的发展有所关注。从Sun收购MySQL至今,MySQL仍然是最受欢迎的开源数据库软件。开源、免费的MySQL,让你可以用近乎零成本建立容量巨大的数据库或者网上交易系统,再加上Sun和无数社区精英的技术支持,不风靡都很难!但这些年来,MySQL中文资料较为匮乏,基本上处在初、中级的水准,缺乏足够的深度。人们对该软件往往知其然而不知其所以然。这导致了在中国MySQL数据库高级人才相对较少。《MySQL核心内幕》这本书是研究MySQL内核的绝佳指导资料,真正做到了“授人以渔”。打开MySQL的源代码稍作观察,便可发现其规模之大,有如阿房宫——“覆压三百余里,隔离天日”;其关系错综复杂,可谓“廊腰缦回,檐牙高啄,各抱地势,勾心斗角”。这无疑给想深入理解MySQL的人士出了一个难题。在《MySQL核心内幕》这本书中,作者将MySQL分而治之,将复杂的MySQL内核瞬间瓦解成多个功能子系统。每一章中,作者抽丝剥茧,化解理解子系统的各个难点。所以,你面对的不再仅仅是赤裸裸的代码,而是真正能雅俗共赏的设计艺术。在读书的同时,一定要亲身实践:理解内核某部分的捷径就是对它做出修改,这样才能越过代码本身看到内核的深层机理。读者带着一份耐心、一份执着,闯过一道道难关,直到阅读完本书的最后一章时,会有“蓦然回首,那人却在灯火阑珊处”的欣喜感觉!相信在本书的带领下,中文地区MySQL用户和支持者的水平能够更上一层楼。
内容概要
本书由Sun中国工程院的MySQL专家讲解MySQL内核设计和实现。作者对MySQL分而治之,将复杂的MySQL内核划分成多个功能子系统,从而化解了理解子系统的各个难点。 本书共分12章。第1章介绍MySQL的历史渊源。第2章介绍MySQL数据库的架构。第3章深入了解MySQL源代码,第4章解释关键的类和算法。从第5章开始直到最后,按各子系统进行讲解,内容包括连接和网络系统、服务器线程和资源管理、查询解析与优化器、安全管理系统、存储引擎接口详解与实践、经典存储引擎、日志功能及实践分析和其他子系统。 配书光盘中提供了相关的MySQL源代码。 本书适合对内核编程设计感兴趣的技术人员和开发者以及在学习、工作中使用MySQL数据库的各类技术人员阅读。由于主要内容均涉及到MySQL内核源代码,所以学习者应当具备C/C++预备知识。
作者简介
祝定泽,英文名“Hironics”,常用网名也为此。 Sun MySQL架构师,一致关注MySQL的在国内的成长与应用。几位作者共同运维MySQL技术网站http://www.mysqlsystems.com,Hironics经常供稿于InfoQ。Hironics拥有MySQL的全部认证:CMA、CMDEV、CMDBA和CMCDBA。
书籍目录
第1章 MySQL的前世今生 1.1 MySQL的历史 1.2 存储引擎 1.3 MySQL市场 1.4 后话 第2章 数据库系统的立体视图 2.1 数据库系统架构 2.2 数据库系统的分类 2.2.1 面向对象型数据库 2.2.2 关系型数据库 2.2.3 对象关系型数据库 2.3 关系型数据库系统架构 2.3.1 客户端应用程序 2.3.2 查询接口 2.3.3 查询语句处理 2.3.4 查询优化 2.3.5 语句执行 2.3.6 读写文件 2.3.7 模块协作 2.3.8 RDBMS的层次结构 2.4 MySQL数据库系统 2.4.1 MySQL数据库系统架构 2.4.2 子系统之间的联系 2.4.3 MySQL子系统和代码 2.5 小结 第3章 畅游源代码 3.1 下载MySQL源代码 3.1.1 Bazaar安装 3.1.2 访问MySQL源代码 3.2 源代码目录结构 3.2.1 主要关键目录 3.2.2 开源社区贡献的代码 3.2.3 解读sql/sql_delete.cc 3.3 MySQL内核分析工具 3.3.1 编译和安装MySQL 3.3.2 调试MySQL 3.3.3 源代码检索工具 3.3.4 Doxyen分析源代码 3.4 小结 第4章 核心类、库函数和算法 4.1 核心类 4.1.1 线程类(THD) 4.1.2 Item类 4.1.3 表描述类- TABLE 4.1.4 FIELD类 4.2 函数库 4.2.1 内存操作函数 4.2.2 文件系统操作函数 4.2.3 哈希表操作 4.2.4 字符串操作 4.2.5 宏定义 4.3 核心算法 4.3.1 Bitmaps –位图 4.3.2 表连接缓冲工作原理 4.3.3 MySQL排序实现 4.3.4 字符集和校对规则 4.4 小结 第5章 连接和网络系统 5.1 MySQL NET协议 5.1.1 协议和操作系统协议栈 5.2 网络包格式 5.2.1 Null结尾字符串和带长度标识字符串 5.2.2 网络包头部格式 5.3 客户端发送的包 5.3.1 客户端认证包 5.3.2 命令包(Command) 5.4 服务器端发送的包 5.4.1 握手初始化包 5.4.2 结果包分类 5.4.3 OK包 5.4.4 ERROR包 5.4.5 结果集包 5.5 小结 第6章 服务器线程和资源管理 6.1 线程还是进程 6.1.1 线程与进程的比较 6.2 MySQL线程问题和解决方案 6.2.1 标准C函数调用 6.2.2 互斥锁 6.2.3 线程同步 6.3 客户端请求的处理 6.3.1 MySQL的启动过程 6.3.2 执行流 6.4 类、API、变量和结构体 6.5 MySQL内存分配 6.5.1 内存共享块 6.5.2 线程内存区域(TMA) 6.5.3 MySQL如何实现内存分配 6.6 小结 第7章 查询解析与优化器 7.1 MySQL解析器 7.1.1 词法分析程序 7.1.2 语法分析器 7.1.3 几个关键类 7.2 查询优化器 7.2.1 传统优化算法 7.2.2 MySQL的查询算法 7.3 小结 第8章 安全管理系统 8.1 账号认证 8.1.1 账号定义 8.1.2 身份审核 8.1.3 具体优先原则 8.2 权限控制 8.2.1 系统权限表 8.2.2 权限审核 8.2.3 权限级别 8.3 安全部署 8.3.1 服务器系统安全 8.3.2 数据库系统安全 8.4 小结 第9章 存储引擎接口详解与实践 9.1 MySQL插件式存储引擎体系结构 9.1.1 基本流程 9.1.2 从源代码文件开始 9.1.3 意想不到的帮助 9.1.4 Handlerton 9.1.5 Handler类 9.1.6 Archive存储引擎的简单分析 9.2 开发我的存储引擎——Lillian(模板剖析) 9.2.1 底层I/O类 9.2.2 Lillian_data类 9.2.3 Lillian_index类 9.3 开发我的存储引擎——Lillian(代码编写) 9.3.1 阶段一:初始化存储引擎 9.3.2 阶段二:表操作 9.3.3 阶段三:读写数据 9.3.4 阶段四:修改、删除数据 9.3.5 阶段五:索引功能 9.4 小结 第10章 存储引擎 10.1 MySQL元数据文件——frm 10.2 MyISAM存储引擎 10.2.1 MyISAM的架构 10.2.2 数据文件(.MYD) 10.2.3 索引文件(.MYI) 10.3 InnoDB存储引擎 10.3.1 InnoDB的宗旨和主要功能特性 10.3.2 InnoDB的架构和代码布局 10.3.3 InnoDB 文件格式 10.3.4 InnoDB 记录结构 10.3.5 InnoDB页结构 10.4 小结 第11章 MySQL日志功能及实现分析 11.1 错误日志 11.1.1 错误日志功能介绍 11.1.2 错误日志初始化 11.1.3 错误日志的记录实现 11.2 普通日志 11.2.1 普通日志功能介绍 11.2.2 普通日志的初始化 11.2.3 普通日志记录功能实现 11.3 慢查询日志 11.3.1 慢查询日志功能概述 11.3.2 慢查询日志的初始化 11.3.3 慢查询日志的实现 11.4 二进制日志 11.4.1 二进制日志功能介绍 11.4.2 二进制日志的初始化 11.4.3 二进制日志的实现 11.5 小结 第12章 其他子系统 12.1 复制功能(Replication)子系统 12.1.1 Replication基础架构描述 12.1.2 Replication实现原理简述 12.1.3 Replication复制线程 12.1.4 Replication功能文件 12.1.5 Replication子系统组成 12.1.6 Replication原理剖析 12.1.7 小结 12.2 错误消息子系统 12.2.1 错误消息的实现原理 12.2.2 错误消息的一致性 12.2.3 不同版本下错误消息的添加方法 12.2.4 小结 附录一 Bazaar入门指南 附录二 MySQL源码分布纵览 参考文献
章节摘录
插图:第1章 MySQL的前世今生1.2 存储引擎MySQL的独到之处——插件式存储引擎(Pluggable Storage Engine),可谓将数据库理论发挥得淋漓尽致,完美地映射了数据库的外模式和内模式理论。MySQL存储类别的粒度小到每个表,用户可以最大程度地利用各种引擎的优点,又避免了它的缺点。相对于其他数据库系统往往无法选择存储引擎的现实,MySQL能够满足多方面的需求。如数据库仓库市场,嵌入式数据库等。IT词典:内模式和外模式为了有效地组织和管理数据,提高数据库的逻辑独立性和物理独立性,人们为数据库设计了一个严谨的体系结构,数据库领域公认的标准结构是三级模式结构,它包括外模式、模式和内模式。数据库结构分为三级:面向用户或应用程序员的用户级、面向建立和维护数据库人员的概念级、面向系统程序员的物理级。用户级对应外模式,概念级对应模式,物理级对应内模式,使不同级别的用户对数据库形成不同的视图。所谓视图,就是指观察、认识和理解数据的范围、角度和方法,是数据库在用户方面看到的特征,很显然,不同层次(级别)的用户所"看到''的数据库是不相同的。当前市场上主流的数据库系统都是按行进行存储的,但这类存储引擎存在不少缺陷。下面用一个例子来说明按列存储的存储引擎。这个例子将说明按列存储在某些情况下在性能上是优于按行存储的。表1-2是一个存储员工部分信息的表T,包含用户ID(empid),姓名域(lastname, firstname)和工资(salary)。
媒体关注与评论
当初听说ISVE组的两个人正在写MySQL内核方面的书,感觉非常诧异。不曾想SUN中国工程研究院的人也有心写内核方面的书。 如今当这本书完整的展现在我面前时,我确定他们不是在开玩笑。但这些年来,MySQL中文资料较为匮乏,基本处在初、中级的水准,缺乏足够的深度。人们往往知其然而不知其所以然。这导致了在中国 MySQL 数据库 高级人才相对较少。《MySQL核心内幕》这本书是研究MySQL内核的绝佳指导资料,真正做到了“授人以渔”。 ——Kevin Song——Sun中国工程院院长 MySQL在业界被誉为世界上最流行的开源数据库,它提供了成本核算的数据库管理系统的可行性新方案。Sun收购MySQL的开源业务通过给客户提供高品质的服务提供经验丰富的技术支持工程师。要了解源代码水平的全部细节和好处,工程师们要了解MySQL内核的基本原理 。我相信这本书完成了这项任务,祝定泽,一个有成就的MySQL专家,帮助工程师和读者了解MySQL的哲学和设计。享受开放源码的自由世界。 让我们庆祝这种可能性! ——亚太区首席MySQL顾问 梶山隆輔 作为一名开发人员,不应该只限于使用工具,而应该去了解其原理及本质。了解一个工具原理最好的方法莫过于从源代码着手。《MySQL 核心内幕》为想要了解MySQL核心机理的国内开发人员打开了一扇门,作者通过理论、实践相结合,对系统架构及核心代码进行了详尽的阐述,本书对于热爱MySQL开源软件,同时喜欢刨根问底的技术人员是一本必看的好书。 ——金融界架构师 王志刚 《MySQL 核心内幕》是国内第一本解析MySQL源代码的著作,深刻揭示了 MySQL的内部机理、阐述了MySQL各子系统的关联、并实例编写了自定义存储引擎,相信从事MySQL相关工作的技术人员可从中受益。 ——百度高级DBA 吴诗展
编辑推荐
《My SQL核心内幕》:新一轮MySQL热浪袭来,翻开最新GA的MySQL源码,国内首个开源的MySQL存储引擎,跟踪Sun收购MySQL后的动态变化。国内首次披露的 MySQL 内核视频讲解,国内首款开源MySQL存储引擎Lillian的代码,MySQL Bazaar中文分析结果,更多参考文档和资源。如果您是一名有着强烈使命感的IT技术高人……抑或是一名才华横溢的设计师……如果您有按捺不住的创作冲动……如果您对市场上的图书有着诸多无奈……如果您打算潜心创作一本“永垂不朽”的IT图书……
图书封面
图书标签Tags
无
评论、评分、阅读与下载