关于SQLServer2005 的学习笔记(二)——体系结构一
SQLServer2005引擎组件 首先让我们先来看看SQL Server2005的引擎组件,SQLServer2005有四大组件:协议、关系引擎、存储引擎和SQLOS。 协议层接收来自于用户的请求(查询、更改、删除、创建表等等操作)并把它们转换成关系引擎能够识别的形式。它还能够获取任意查询、状态信息、错误信息的结果,然后把这些结果转换成客户端能够理解的性,最后再返回客户端。这一层的意义在于是应用程序访问SQL Server的接口。 关系引擎层能够接收SQL批处理,以及决定如何处理。它能够解析、编译和优化请求并检查批处理的执行过程,对于所需的数据会发送数据请求给存储引擎。这一层的主要是解析、编译和优化,生成语法树,并与存储引擎进行交互。 存储引擎则负责管理所有的数据访问,包括基于事务的命令和大批量操作。这些操作包括备份、批量插入和某些数据库一致性检查。根据图上所示,主要是实现数据的访问、数据的缓存、锁的管理等操作。 SQLOS则可以理解为SQL Server2005的操作系统,主要负责处理与操作系统之间的工作,如何进行内存分配、死锁检查、I/O操作等;很难说的清楚SQLOS是SQLServer自己独有的处理机制呢,还是调用OS来完成相关处理的。 ? SQLServer2000引擎结构 我们再回头看看SQLServer2000的组件关系,在SQLServer2000联机帮助中基本上缺乏相关detail的体系架构图,该图主要也是描述了SQLServer2000中各个主要组件之间的层次和调用关系;而且我对SQLServer2000的体系结构也缺乏深刻认识,再次不做详述。 ? Oracle体系架构 对于Oracle而言,Oracle并没有提供一个比较全面的组件架构,而是认为Oracle就是数据库和实例的集合,当然我们也可以把SGA各个组成部分、Oracle各种进程、各种数据库文件视为其组件。实例是由SGA和Oracle进程构成的。每一个运行的Oracle数据库都与一个Oracle实例关联。Oracle数据库使用内存结构和进程来管理、访问数据库。所有内存结构都存在于构成数据库服务器的计算机的主存中。进程指的是在这些计算机内存中运行的作业。进程被定义为“控制线程”或操作系统中可以运行一系列步骤的一种机制 ? 实际上从总体结构上看,SQLServer2005也是基于实例和关系数据库的集合,即通过每一个实例来管理若干数据库(Oracle和SQL Server的数据库是概念不同的,从Oracle角度而言,SQL Server的数据库概念比较怪异,理论上应该与Oracle的逻辑概念表空间是等效的),这些数据库总的来说都是为了满足某个应用需要和业务逻辑而组合起来的一个完整的应用,而每个数据库又是一个相对独立的业务逻辑单位,但他们是为了实现一个共同的目标,因此也不大适合进行分割成若干实例。 SQL Server2005的引擎组件更注重的是数据库处理过程中的依次顺序,实际上从实例角度而言,两者可以说是类似的,比如都具备数据缓冲区、字典缓冲区、日志缓冲区、各种数据库进程或线程(数据库读写进程、日志读写进程、检查点) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |