最近想系统的学习DBMS实现方面的知识,并记录学到的一点一滴,于是准备在博客园上发表一系列这方面的知识,主要是根据《数据库实现》这本书,把自己的理解进行总结,希望各位园友不吝赐教,小弟感激不尽。
王珊老师有云:数据库就是数据的仓库。数据库管理系统就是对数据仓库进行管理。数据库的基本功能就是为了方便用户对数据的存取和操作。普通的文件也可以存储数据,但是不方便对数据进行统一管理。下面从整体上介绍下DBMS应该具有哪些模块。
一个DBMS首先应该有自己的内存管理模块,如果频繁的和操作系统进行空间的申请和释放,会严重影响一个DBMS的性能,据说QQ也是自己进行管理的。其次需要存储管理,如插入记录或者查询记录,最终都要反映到文件上,再底层就是磁盘上,OS的文件系统已经封装了对磁盘的操作,DBMS又不能仅仅按照OS的文件系统进行存储管理,DBMS应该在OS之上,对存储进行更进一步的管理,记录当然可以在文件中顺序存储,但一般DBMS都是按照B树的方式进行存储,这样对定位数据十分有利。频繁的和磁盘进行交互,严重影响DBMS的性能,于是缓冲区管理模块是必须滴。上面就是几个比较底层的模块:内存管理,存储管理,缓冲区管理。
用户通过SQL语句进行数据库的管理和操作,SQL语句又分为DDL和DML。所以需要DDL和DML编译器,对SQL语句进行语法分析,并生成执行计划,最后将执行计划送到执行引擎,执行执行计划。DM是SQL中使用最多的语句,SELECT又是DML中使用最多的语句,查询一般是将SELECT语句转化为内部语法树,然后查询优化器根据规则将语法树转化为有效的等价的形式,最后生成执行计划,下面举例说明(http://www.xinx.sdnu.edu.cn/sfzx/jpsykc/wh/wh04.html):
view sourceprint?
1、SELECT Student.Sname
2、FROM Student, SC
3、WHERE Student.Sno=SC.Sno
4、AND SC.Cno='2';
这条含有JOIN的SELECT语句首先转化为内部的语法树,形式如下:
语法树然后转化为关系代数语法树,形式如下:
考试大温馨提示:本内容来源于网络,仅代表作者个人观点,与本站立场无关,仅供您学习交流使用。其中可能有部分文章经过多次转载而造成文章内容缺失、错误或文章作者不详等问题,请您谅解。如有侵犯您的权利,请联系我们,本站会立即予以处理。
相关推荐:
Delphi5-隔行改变DBGrid网格颜色
oracle中关于flashback闪回的介绍
oracle父子关系树递归排序