2007-01-08

SQL Server查询处理器机制与结构(上)

来源: 本站收集整理 作者:佚名 评论 0 条
 

SQL Server,或更确切一点地说,是“SQL Server 关系服务器”,经常被说成是由两个主要部分组成,即关系引擎和存储引擎。正如前面提到过的那样,已经有很多文献介绍存储引擎的细节了,所以本文主要介绍关系引擎的功能。图 3 给出了 SQL Server 关系引擎部分的主要组件。所给出的组件可以分为三组子系统。左边的组件编译查询,包括查询优化器。查询优化器是所有关系数据库引擎中的最神秘的部分之一,从性能的角度看也是最重要的部分。查询优化器负责提取 SQL 语句中的非过程请求部分,并将其翻译成一组磁盘 I/O、过滤以及其他能够高效地满足该请求的过程逻辑。图中右侧是执行基础结构。这里实际上只有很少的功能。当编译组件的工作完成之后,所产生的结果只需用很少几个服务即可直接执行。

   

图 3. 服务器结构

图的中间是称为 SQL Manager 的部分。SQL Manager 控制着 SQL Server 内部的所有数据的流动。SQL Manager 控制着 RPC 消息,在 SQL Server 7.0 中,绝大多数来自客户机的功能调用都是通过 RPC 消息进行的。上一节中介绍的虚拟系统存储过程逻辑上也是 SQL Manager 的一部分。通常,作为 TDS SQL 语言消息的 SQL 语句直接在编译一端执行,与早期版本相比,SQL Server 7.0 较少使用这种方法,但还算是比较常见的。执行结果由称为 ODS 的执行引擎中的组件格式化为 TDS 执行结果消息。

绝大多数输出都来自图中的执行端,而且输出结果也真正出自表达式服务。“表达式服务”库是进行数据转换、谓词评估(过滤)以及算法计算的组件。它还利用了 ODS 层,把输出结果格式化为 TDS 消息。

还有几个组件,我们只是在这里简单地提一下,这些组件在关系引擎内部提供附加服务。这些组件中的一个是目录服务组件,用于数据定义语句,例如 CREATE TABLE、CREATE VIEW 等。目录服务组件主要放在关系引擎中,但是实际上大约有三分之一的目录服务组件是在存储引擎中运行的,所以可以看作是共享组件。

关系引擎中的另一种组件是“用户模式调度程序 (UMS)”,这是 SQL Server 自己内部的纤程和线程规划器。把任务分配给纤程或线程是一种非常复杂的内部机制,取决于对服务器如何配置,以及在 SMP 系统中答应 SQL Server 进行处理器之间的适当的负载平衡。UMS 还可以避免 SQL Server 由于同时运行太多的线程而导致性能过低。最后,还有大家熟悉的系统过程,逻辑上它们也属于关系引擎的一部分。这些组件肯定不是服务器代码,因为可以很轻易地使用 sp_helptext 检查定义这些过程的 Transact-SQL 代码。但是,系统过程被作为服务器的一部分来对待,因为系统过程的用途是显露重要的服务器能力,像系统表一样,以供给用程序在更高的层次上和更适当的层次上使用。假如应用程序开发人员将较高层次的系统过程 — 更轻易使用 — 作为一种接口,即使随着版本的更新,原始层次上的系统表发生变化时,应用程序仍然可以继续使用。


共4页: 上一页 [1] [2] [3] 4 下一页

(本文仅表明作者个人观点,不代表本站及其管理员立场.) 推荐 收藏 投稿 打印 返回 关闭
上一篇:使用SQL Server索引视图来提高性能  
下一篇:SQL Server2005数据库查询中使用CTE
    评论加载中…
 推荐文章
     

网站首页  -  网站地图 -   站长论坛  -  网站投稿  -    -  网站管理
Copyright © 2008 芜湖站长站 All Rights Reserved 皖ICP备07500611号