关于SQLServer2005的学习笔记(二)——体系结构(一)
2009-12-25 08:26
281 查看
关于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
的引擎组件更注重的是数据库处理过程中的依次顺序,实际上从实例角度而言,两者可以说是类似的,比如都具备数据缓冲区、字典缓冲区、日志缓冲区、各种数据库进程或线程(数据库读写进程、日志读写进程、检查点)
的学习笔记(二)——体系结构一
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
的引擎组件更注重的是数据库处理过程中的依次顺序,实际上从实例角度而言,两者可以说是类似的,比如都具备数据缓冲区、字典缓冲区、日志缓冲区、各种数据库进程或线程(数据库读写进程、日志读写进程、检查点)
相关文章推荐
- 关于SQLServer2005的学习笔记(二)——体系结构(一)
- 关于SQLServer2005 的学习笔记(二)——体系结构一
- 关于SQLServer2005的学习笔记——临时表、表变量和CTE
- 关于SQLServer2005的学习笔记——统计学自动分组问题
- 关于SQLServer2005的学习笔记——系统触发器
- 关于SQLServer2005的学习笔记——异常捕获及处理
- 关于SQLServer2005的学习笔记——XML的处理
- 关于SQLServer2005的学习笔记——SQL查询解析步骤
- 关于SQLServer2005的学习笔记——子查询
- 关于SQLServer2005的学习笔记——XML的处理
- 关于SQLServer2005的学习笔记——自定义分组的实现
- 关于SQLServer2005的学习笔记——生日问题
- 关于SQLServer2005的学习笔记——异常捕获及处理
- [转载]关于SQLServer2005的学习笔记——异常捕获及处理
- 关于SQLServer2005的学习笔记——XML的处理
- 关于SQLServer2005的学习笔记——子查询
- 关于SQLServer2005的学习笔记——自定义分组的实现
- 关于SQLServer2005的学习笔记(一)——前言
- 关于SQLServer2005的学习笔记——CTE递归和模拟测试数据
- 关于SQLServer2005的学习笔记——分析函数