单位代码: 10293 密级:
硕士专业学位论文
论文题目:MySQL数据库源代码分析及
存储引擎的设计
学号Y201092232
姓名王威
0师
马明栋
专业学位类别工程硕士
类型全日制□在职□
专业(领域)电子与通信工程
论文提交日期二O一二年三月
南京邮电大学学位论文原创性声明本人声明所呈交的学位论文是我个人在导师指导下进行的研究工作及取得的研究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含为获得南京邮电大学或其它教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意。
本人学位论文及涉及相关资料若有不实,愿意承担一切相关的法律责任。
研究生签名:_____________ 日期:____________
南京邮电大学学位论文使用授权声明
本人授权南京邮电大学可以保留并向国家有关部门或机构送交论文的复印件和电子文档;允许论文被查阅和借阅;可以将学位论文的全部或部分内容编入有关数据库进行检索;可以采用影印、缩印或扫描等复制手段保存、汇编本学位论文。本文电子文档的内容和纸质论文的内容相一致。论文的公布(包括刊登)授权南京邮电大学研究生院(筹)办理。
涉密学位论文在解密后适用本授权书。
研究生签名:____________ 导师签名:____________ 日期:_____________
南京邮电大学
硕士学位论文摘要
学科、专业:研究方向:无线
数据与移动计算
作者:2009级硕士研究生王威
指导教师:马明栋教授
题目:MySQL 数据库源代码分析及存储引擎的设计
英文题目:MySQL database source code analysis
and design of the storage engine
主题词: MySQL,数据库,源代码,插件式存储引擎Keywords:MySQL,database,source codes, plug-in storage engine
南京邮电大学硕士研究生学位摘要
摘要
MySQL 是一种关系型数据库系统,相比较其他数据库系统而言,MySQL 是目前运行速度最快的数据库系统之一。其优势在于源代码开放,任何人都可以依据 General Public License,下载并根据个性化的需求对源代码进行修改。插件式存储引擎是 MySQL 数据库
系统最显著的特色之一,作为数据库服务器中的组件,它负责为数据库执行数据 I/O 操作,
解决了关系型数据库物理层优化这个难题。数据库专业人员可根据数据读取模式的特定需求,来选择专门的存储引擎。不同的存储引擎具有不同的能力,应用程序是与之分离的。
本文针对 MySQL 源代码展开研究,深入分析 MySQL 内核的设计与实现。论文首先介
绍关系型数据库基础知识以及 MySQL 数据库系统总体架构。然后研究 MySQL 内核的实现
方法,分析代码的核心类和核心算法,重点剖析插件式存储引擎体系结构,介绍两种经典存储引擎:MyISAM 和 InnoDB。最后开发设计出自定义存储引擎 Nanjupt,引擎能够实现表操作、数据操作及索引功能。
关键字:MySQL,数据库,源代码,插件式存储引擎
I
南京邮电大学硕士研究生学位ABSTRACT
ABSTRACT
MySQL is a relation database and currently one of the most rapid database when compared with other databases. The biggest advantage of MySQL lies on its open source codes, so anyone can download it under the permission of GPL and modify it according to personalized requirements. Plug-in storage engine is the most obvious character of MySQL database system. As the component of database server, it is responsible for the I/O operation of database, so that it solve the issue of relation database optimization on physica l layer. Database professionals select a specialized storage engine according to specific application's requirements on database read mode, different storage engines separated from the application have different capabilities.
This article will open a research based on MySQL open source codes and analyze the design and realization of MySQL kernel deeply. Firstly, our research focus on database foundation of knowledge and MySQL system framework, secondly, it studies MySQL kernel method and analyzes the key classes and algorithm, then further research the entire construction of plug- in storage engine, introduced two classic storage engines: MyISAM and InnoDB. Finally, customized storage engine Nanjupt is designed.
KeyWords: MySQL, database,source codes, plug- in storage engine
II
南京邮电大学硕士研究生学位目录
目录
摘要.......................................................................................................................................................I
II ABSTRACT........................................................................................................................................
目录....................................................................................................................................................III
第一章绪论 (1)
1.1 课题背景 (1)
1.2 研究现状及发展趋势 (1)
1.3 研究目的和意义 (2)
1.4 论文安排 (2)
第二章
数据库系统的分类与架构 (3)
2.1 数据库系统分类 (3)
2.1.1 面向对象型数据库 (3)
2.1.2 关系型数据库 (4)
2.1.3 对象关系型数据库 (5)
2.2 关系型数据库系统总体架构 (6)
2.2.1 客户端应用程序 (6)
2.2.2 查询语句处理 (7)
2.2.3 模块协作 (8)
2.2.4 RDBMS 的结构 (9)
2.3 MySQL 数据库体系 (10)
2.4 本章小结 (11)
第三章 MySQL 的核心类及其重要算法 (12)
3.1 MySQL 代码目录 (12)
3.1.1 代码目录结构 (12)
3.1.2 主要关键目录 (12)
3.2 MySQL 代码的核心类 (15)
3.2.1 线程类 (15)
3.2.2 Item 类 (17)
3.2.3 表描述类-TABLE (18)
3.2.4 Field 类 (19)
3.3 MySQL 的核心算法 (20)
3.3.1 Bitmaps-位图 (20)
3.3.2 表连接缓冲 (21)
3.3.3 MySQL 排序实现 (22)
3.4 本章小结 (26)
第四章 MySQL 的存储引擎 (27)
4.1 存储引擎概述 (27)
4.2 MyISAM 存储引擎 (28)
4.2.1 MyISAM 引擎的特点 (28)
4.2.2 数据文件 (28)
4.2.3 索引文件 (29)
4.3 InnoDB 存储引擎 (33)
4.2.1 InnoDB 的功能特征 (33)
4.2.2 InnoDB 的架构及代码分布 (34)
III
南京邮电大学硕士研究生学位目录
4.2.3 InnoDB 文件格式 (35)
4.2.4 InnoDB 记录结构 (36)
4.2.5 InnoDB 页结构 (37)
4.4 本章小结 (39)
第五章自定义存储引擎 Nanjupt 的设计 (40)
5.1 初始化存储引擎 (40)
5.1.1 创建 Nanjupt 源文件 (40)
5.1.2 把 Nanjupt 存储引擎加入到 MySQL 服务器 (40)
5.1.3 编译 Nanjupt 存储引擎 (41)
5.2 表操作 (43)
5.2.1 修改头文件 ha_nanjupt.h (43)
5.2.2 修改类文件 ha_1443742c6137ee06eef91833 (43)
5.3 索引功能 (46)
5.4 本章小结 (50)
第六章结束语 (51)
6.1 课题研究总结 (51)
6.2 进一步研究方向 (52)
致谢 (53)
参考文献 (54)
IV
南京邮电大学硕士研究生学位第一章绪论
第一章绪论
1.1 课题背景
在众多的开源数据库管理系统中,MySQL 数据库是其中最主流的产品。该数据库是关系型数据库管理系统的一种,关系型数据库不是将所有数据放在一个大仓库内,而是将数据保存在不同的表中,如此就加快了运行速度并且提高了存储灵活性。MySQL 使用结构化查询语言SQL,是用于访问数据库最常用的标准化语言。MySQL 由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,从微型的嵌入式系统到中小型的Web 网站,至大型的企业级应用都可以见到其身影,大多数人都认为在不需要事务化处理的情况下,
MySQL 是管理内容最好的选择。
由于 MySQL 是开放源代码的,因此用户可以在 General Public License [1][2]
的许可下随时
下载,并根据特定的需要对代码进行修改。MySQL 5.0 发布之后,MySQL 已经完全支持
存储过程,但是 MySQL 目前没有自己专用的存储引擎。MySQL 与其他数据库最大的区别就是使用可插取的存储引擎,它根据特定的需求利用不同的存储引擎技术把特定的数据存
储在文件或者内存中。 MySQL 有多种存储引擎 :MyISAM 、 InnoDB 、 MERGE 、
MEMORY(HEAP)、 BDB(BerkeleyDB)、EXAMPLE、 FEDERATED、ARCHIVE、CSV、BLACKHOLE。可以采用内存存储引擎存储临时数据,采用事务存储引擎来完成事务处理,相对于其它的一些数据库系统,能够灵活的选择不同的存储引擎来存储和检索数据,对于用户来说是十分受欢迎的。
1.2 研究现状及发展趋势
随着开源产品的流行,开放源代码的数据库系统得到越来越广泛的应用。MySQL、
MaxDB [3]
和 PostgreSQL
[4]
是目前主要的开源数据库产品,其中以 MySQL 最为普及。MySQL
关系型数据库的第一个 Windows 可使用版本发行于 1998 年 1 月,它使用多线程机制,提供完全的多线程运行模式,并且提供了面向 C、C++、Perl、PHP、Eiffel、Java、Python 和 Tcl 等等编程语言的编程接口;能够支持多种字段类型,并且提供了完整的操作符支持查询操作。基于 MySQL 的新应用程序在 4.0 版本中获得了更加广泛的应用,在这个版本中将有以
下新的特性被提供:新的表定义文件格式、高性能的数据复制功能、更加强大的全文搜索
功能,并对 ANSI 92/ANSI 99 标准[5]
完全兼容。MySQL5.0
[6]
版本出现之后,MySQL 数据库1
南京邮电大学硕士研究生学位第一章绪论的功能越来越多样化,并逐渐向企业级市场拓展,凭借其优异的可移植性和价格优势,MySQL 的市场正在扩大。在不久的将来,在中小企业用户市场的推动下,MySQL 数据库有望走向应用的主流。
1.3 研究目的和意义
MySQL 最大的用户群是Web 站点。MySQL 之所以能成为Web 站点开发者最常使用的数据库管理系统,是因为MySQL 数据库的安装配置都非常简单,其使用过程中的维护也不像很多大型商业数据库管理系统那么复杂,而且其性能出色。
MySQL 数据库的插入和查询都非常高效,在使用MyISAM 存储引擎的时候,二者可以做到互不锁定,具有很高的并发性能。所以,对需要大量插入和查询日志记录的系统,比如处理用户的登录日志和操作日志的时候,都是非常适合的应用系统。
嵌入式环境对系统最大的限制是硬件资源非常有限,在嵌入式环境下运行的软件系统,必须是轻量级低消耗的软件。MySQL 在资源方面的使用伸缩性非常大,它可以在资源非常充裕的环境下运行,也可以在资源非常少的环境下正常运行。对于嵌入式环境来说,它是一种非常合适的数据库系统,而且 MySQL 有专门针对嵌入式环境的版本。
1.4 论文安排
论文共分六个部分。
第一章主要介绍本课题的研究背景以及研究的意义和目的。
第二章概述数据库系统的分类、关系型数据库系统架构、MySQL 数据库系统架构以及MySQL 各个子系统之间的联系。
第三章深入分析 MySQL 源代码,剖析 MySQL 的核心类和核心算法。第四章重点研究 MySQL 插件式存储引擎体系结构,并阐述两种经典存储引擎 MyISAM
和 InnoDB。
第五章设计出自定义存储引擎 Nanjupt。
第六章总结与展望,总结本文所做的工作,并展望未来的研究方向。
2
南京邮电大学硕士研究生学位第二章数据库系统的立体视图第二章数据库系统的分类与架构
2.1 数据库系统分类
2.1.1 面向对象型数据库
面向对象的概念首先是在程序语言的设计中提出的。“面向对象”将客观世界看作由不同种类的许多对象构成的,是一种认识客观事物的方法和对客观事物的模拟。每一个对象都有着自己的内部机理和作用规律,各个对象之间的联系和相互之间的作用就构成了完整的客观世界。面向对象的方法学引入的对象、方法、实例、继承性、类以及封装性等一系列概念,为我们设计和实现大型软件系统打下了坚实的理论基础和操作可行性。在数据库系统中应用面向对象技术,既是数据库系统发展的需要,也是面向对象技术和数据库技术发展的必然趋势。面向对象技术在数据库系统中的应用在两个方面:数据库管理系统和数据库应用开发工具,即面向对象数据库管理系统和开发面向对象的数据库的应用工具。
搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新初中教育MySQL数据库源代码分析及存储引擎的设计硕士论文全文阅读和word下载服务。
相关推荐: