【PHP开源代码栏目提醒】:网学会员鉴于大家对PHP开源代码十分关注,论文会员在此为大家搜集整理了“MySQL数据库源代码分析及存储引擎的设计 - 硕士论文”一文,供大家参考学习
南京邮电大学硕士学位
论文摘要学科、专业:研究方向:无线数据与移动计算作者: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 PublicLicense,下载并根据个性化的需求对源
代码进行修改。
插件式存储引擎是 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 comparedwith other databases. The biggest advantage of MySQL lies on its open source codes so anyonecan download it under the permission of GPL and modify it according to personalizedrequirements. 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 itsolve the issue of relation database optimization on physica l layer. Database professionals select aspecialized storage engine according to specific applications requirements on database read modedifferent storage engines separated from the application have different capabilities. This article will open a research based on MySQL open source codes and analyze the designand realization of MySQL kernel deeply. Firstly our research focus on database foundation ofknowledge and MySQL system framework secondly it studies MySQL kernel method andanalyzes the key classes and algorithm then further research the entire construction of plug- instorage engine introduced two classic storage engines: MyISAM and InnoDB. Finallycustomized storage engine Nanjupt is designed.KeyWords: MySQL databasesource codes plug- in storage engine II南京邮电大学硕士研究生学位 目录 目录摘要....................................................................................................................................................... IABSTRACT........................................................................................................................................ II第一章 绪论........................................................................................................................................ 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.3.1 InnoDB 的功能特征................................................................................................... 33 4.3.2 InnoDB 的架构及
代码分布....................................................................................... 34 III南京邮电大学硕士研究生学位 目录 4.3.3 InnoDB 文件格式....................................................................................................... 35 4.3.4 InnoDB 记录结构....................................................................................................... 36 4.3.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_nanjupt.cc ........................................................................................ 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 License12的许可下随时下载,并根据特定的需要对
代码进行修改。
MySQL 5.0 发布之后,MySQL 已经完全支持存储过程,但是 MySQL 目前没有自己专用的存储引擎。
MySQL 与其他数据库最大的区别就是使用可插取的存储引擎,它根据特定的需求利用不同的存储引擎技术把特定的数据存储 在 文 件 或 者 内 存 中 。
MySQL 有 多 种 存 储 引 擎 :MyISAM 、 InnoDB 、 MERGE 、MEMORYHEAP、 BDBBerkeleyDB、EXAMPLE、 FEDERATED、ARCHIVE、CSV、BLACKHOLE。
可以采用内存存储引擎存储临时数据,采用事务存储引擎来完成事务处理,相对于其它的一些数据库系统,能够灵活的选择不同的存储引擎来存储和检索数据,对于用户来说是十分受欢迎的。
1.2 研究现状及发展趋势 随着
开源产品的流行,开放源
代码的数据库系统得到越来越广泛的应用。
MySQL、MaxDB3和 PostgreSQL4是目前主要的
开源数据库产品,其中以 MySQL 最为普及。
MySQL关系型数据库的第一个 Windows 可使用版本发行于 1998 年 1 月,它使用多线程机制,提供完全的多线程运行模式,并且提供了面向 C、C、Perl、
PHP、Eiffel、Java、Python 和 Tcl等等编程语言的编程接口;能够支持多种字段类型,并且提供了完整的操作符支持查询操作。
基于 MySQL 的新应用程序在 4.0 版本中获得了更加广泛的应用,在这个版本中将有以下新的特性被提供:新的表定义文件格式、高性能的数据复制功能、更加强大的全文搜索功能,并对 ANSI 92/ANSI 99 标准5完全兼容。
MySQL5.06版本出现之后,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 面向对象型数据库 “面向对象”将客观世界看作由不 面向对象的概念首先是在程序语言的设计中提出的。
同种类的许多对象构成的,是一种认识客观事物的方法和对客观事物的模拟。
每一个对象都有着自己的内部机理和作用规律,各个对象之间的联系和相互之间的作用就构成了完整的客观世界。
面向对象的方法学引入的对象、方法、实例、继承性、类以及封装性等一系列概念,为我们大型软件系统打下了坚实的理论基础和操作可行性。
在数据库系统中应用面向对象技术,既是数据库系统发展的需要,也是面向对象技术和数据库技术发展的必然趋势。
面向对象技术在数据库系统中的应用在两个方面:数据库管理系统和数据库应用开发工具,即面向对象数据库管理系统和开发面向对象的数据库的应用工具。
面向对象数据库系统是一种持久.