SQL2005体系结构

SQL2005体系结构
一、          数据库引擎体系结构
(一)       数据库引擎工作流程

1.       查询处理:查询处理部分将用户的SQL命令转化成SQL能够识别和执行的关系代数操作,同时进行各种优化以提高SQL执行效率,最后生成具体的执行计划后提交事务处理部分。

 
2.       事务处理 :事务是保证数据库中数据完整性和和一致性的机制。事务处理部分负责为执行计划生成具体的事务标识,记录事务的信息。然后将做好标识的的执行计划传送给事务调度部分。
 
3.       事务调度 :很多个并发的客户机产生的事务可能对同一个数据库进行操作,这种情况下必须保证数据的一致性和完整性。事务调度部分将用户的事务加锁,以确保对数据库的操作不会导致错误的结果,然后提交给故障恢复部分。
 
4.       故障恢复 :为保证突发断电等特殊情况下,数据库能够正常恢复。故障恢复部分要同时维护数据和日志的一致性。故障恢复部分保证数据库能够恢复的机制是先写日志后写数据。确保日志内容先写在物理的日志文件上,后再将数据写在物理数据文件上。故障恢复部分对数据,日志的操作是在内存中完成的,当没有足够的内存的时候需要调用内存缓冲管理部分来将物理数据提取到内存。
 
5.       内存缓冲管理 :管理内存区域,必要的时候调用存储管理部分。
 
6.       存储管理 :完成对硬盘上数据的管理操作。根据内存缓冲管理的需要完成数据的读写操作。
 
(二)       数据库引擎组成部分

1.       网络接口:为各种网络协议提供访问数据库的接口。

 
2.       用户模式调度器 :分配和调度用户操作线程和纤程(一个纤程中的几个轻量级任务)
 
3.       关系引擎 :完成对SQL命令的语法分析,编译,优化处理,查询执行等功能。对客户端的查询事务进行处理,向存储引擎请求数据,将处理后的结果反馈给客户端。
 
4.       存储引擎 :完成磁盘数据的读写。
 
5.       关系引擎和磁盘引擎的接口 :关系引擎完成SQL语句的编译和优化后,数据是由存储引擎进行管理的。存储引擎提取的数据最终要放入内存由关系引擎调度执行。两者的主要接口有OLE DB接口和非 OLE DB 接口两种。
 
6.       存储引擎和操作系统接口 :存储引擎的最终操作还是要由Windows API来执行,这个接口通常也称为I/O管理器。
 
7.       Windows API :最终的存储空间的分配和管理是由windows来完成。
二、          查询处理器体系结构
(一)   SQL语句执行流程
1.       分析器扫描SQL语句,并将其分成逻辑单元(关键字,表达式,运算符,标识符等),
2.       生成查询树,描述将源数据转换成结果需要的格式所用的逻辑步骤。
 
3.       查询优化器分析访问源表的不同方法,然后选择返回结果速度最快且使用步骤最少的操作,更新查询树以确切的记录这些步骤,查询树最终优化的版本称为“执行计划”。优化的方法有基于rule的优化和基于cost的优化,SQL 2005 使用基于cost的优化。优化器通过SQL请求,数据库的方案(表和索引的定义)以及数据库的统计信息,输出执行计划。通过算法找出所有查询计划中最优的 作为执行计划,同时还结合统计信息,表和索引的统计信息表明了索引或者表中的列的值的选择性。
 
4.       关系引擎开始执行生成的查询计划,在处理需要基表中数据的步骤时,关系引擎请求存储引擎向上传递关系引擎请求的行集中的数据。
 
5.       关系引擎将存储引擎返回的数据处理成结果集定义的格式,然后将结果集返回客户端。
 
(二)       执行计划的内容:
1.       查询计划:SQL 查询的一系列步骤,是一个只读的数据结构,可以为所有用户共享。
2.       执行计划:每个正在执行查询用户的私有数据结构。
3.       SQL 2005中有一个用于存储执行计划的区域称为过程缓存。
4.       SQL 2005 中有一个存储数据的区域称为数据缓冲池。
5.       执行计划执行的时候首先查找缓存中是否有要执行的操作的执行计划,如果存在就取用,否则重新编译。
6.       生成执行计划后,它处于过程缓存中,当空间不足的时候,老化掉未使用的计划。当年龄为0,对象没有被连接引用且需要内存的时候。
 
 
(三)   内存体系结构

1.       数据缓冲池:保存数据库的数据
2.       日志缓冲池:临时保存数据库的日志
3.       过程缓冲池:临时保存存储过程,触发器和SQL语句的执行计划。
4.       排序缓冲池:临时保存SQL语句的排序数据。
(四)   IO体系结构
1.       I/O数据和内存缓存
通过在内存中分配缓存减少物理I/O次数,数据从数据库磁盘文件读入缓存中,会按照前述的内存管理机制进行保存,这样不必每次物理的读取数据就可以满足多次逻辑I/O。数据的修改也是在缓存中进行的,并不急于写入物理文件中,在写入物理文件之前可以被多次修改。只在需要的时候写入物理文件。
2.       逻辑I/O
每次请求缓存中的数据的时候都发生逻辑I/O。
3.       物理I/O
如果需要的页面不在缓存中的时候发生物理I/O
(五)   磁盘文件组织结构
大小为64KB,每一个区由若干大小为8KB的标准页组成。页分为数据页,索引页,文本/图像页,全局、共享全局分配映射页,可用空间页,索引分配映射页等。分别存储不同类别的数据。区分为统一区和混合区。统一区属于单个对象所有,只存储单个对象的数据,混合区存放多个对象的数据。不满8个页面的数据尽量从混合区分配空间,满8个页面就分配统一区,当增加到8个页面,就到统一区分配空间.

(六)   日志文件
日志文件的作用:
1.       恢复个别事务
2.       启动的时候恢复未完成的事务。
3.       将数据库,文件回滚到故障点。
4.       事务复制
5.       备用服务器解决方案,数据库镜像和日志传送都依赖与事务日志。
本文是在学习电子工业出版设赵松涛编著的《SQL server 2005系统管理实录》总结的,更多信息可以参考作者的书。实在是太可惜了,我在word中编辑了一下午的图片不能显示。只好删去了。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值