当前位置: 首页 > 图文教程 > 数据库 > MSSQL > SQL Server查询处理器机制与结构(上)

MSSQL
sql 批量修改数据库表
mssql CASE,GROUP BY用法
利用SQL SERVER建立登录WINDOWS帐号
SQL Server 2008 正式版安装指南 包含序列号
SQL Server 2008图文安装教程
sql 语句 取数据库服务器上所有数据库的名字
sqlserver 数据类型转换小实验
SQL Server 存储过程解析
压缩技术给SQL Server备份文件瘦身
SQL Server 2005 还原数据库错误解决方法
Sql Server datetime问题
SQL语句 操作全集 学习mssql的朋友一定要看
格式导致的Excel导入sql出现异常的解决方法
SQL Server 数据库自动执行管理任务
sql Set IDENTITY_INSERT的用法
sql 修改表的所有者
过程需要参数 ''@statement'' 为 ''ntext/nchar/nvarchar'' 类型
mssql 建立索引
SQL Server 索引结构及其使用(一)--深入浅出理解索引结构
SQL Server 索引结构及其使用(二) 改善SQL语句

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 68 ::
收藏到网摘: n/a

摘要:本文介绍了在客户机上处理 Microsoft SQL Server 查询的方式,各种客户机与 SQL Server 的交互方式,以及 SQL Server 在处理客户机程序的请求时需要完成的工作。

简介

Microsoft(R) SQL Server(TM) 内部机制和结构是一个非常大的主题,因此本文仅限于程序开发人员感兴趣的问题,集中研究其他源中没有彻底讨论的问题。在讨论 SQL Server 的结构时,我们主要观察客户机的处理过程,研究不同的客户机程序与 SQL Server 的交互方式,以及 SQL Server 如何处理客户机的请求。还有一些讨论 SQL Server 其他方面的信息源,特别是 Microsoft Press 出版的 Inside SQL Server 7.0,作者是 Ron Soukup 和 Kalen Delaney,这本书非常详细地讨论了 SQL Server 存储引擎的内部机制和处理方法,不过对查询处理器的讨论不够深入。本文正填补了这个空白。

我们期望本文有助于读者编写出更好的应用程序。通过本文,读者会在提高程序性能方面得到新的启发,产生新的理解。

SQL Server 是一种客户机/服务器系统

多年来,SQL Server 一直被认为是一种客户机/服务器系统。事实上,Sybase DataServer(以此为基础开发了原始的 SQL Server)正是第一个作为客户机/服务器系统开发的商用关系数据库系统。那这又说明了什么呢?这不只意味着 SQL Server 是一个双层系统。从传统上看,双层系统意味着客户机应用程序运行在一台机器上,向另一台计算机上的服务器发送请求。而对于 SQL Server,客户机/服务器意味着 SQL Server 的组成部分,即客户机 API 部分,驻留在处理结构中的远端,与服务器组件本身是分开的。

在典型的双层模型中,客户机程序部分驻留在台式机上,具有大量客户机应用程序逻辑和业务逻辑,并且会直接向数据库系统发出请求。然后,客户机得到服务器响应这些请求所返回的数据。

三层系统也采用了同样的模型。多年以来,SQL Server 一直用在事务处理监视系统中,例如 BEA 的 Tuxedo 以及 Compaq 的 ACMSxp,这些系统早在二、三十年前就采用了典型的三层模型。三层模型在今天基于 Web 的应用系统中占据了支配地位,这类系统以 Microsoft 的 MTS 以及新的 COM+ 1.0 为代表。从 SQL Server 的角度看,三层解决方案中的客户机程序是放在中间层的。中间层直接与数据库交互。实际的桌面,或瘦客户机(Thin Client),使用其他机制并通常直接与中间层交互,而不是直接与数据库系统交互。图 1 描述了这种结构。

   

图 1. 三层系统模型

客户机结构

从结构的角度看,SQL Server 关系服务器组件本身并不真正关心客户机程序运行的位置。事实上,就 SQL Server 而言,即使在运行 SQL Server 的同一台机器上运行应用程序,仍然还是客户机/服务器模型。服务器运行一个单独的多线程进程,为来自客户机的请求提供服务,不管客户机的位置在哪里。客户机程序代码本身是单独的运行在客户机应用程序内部的 DLL,与 SQL Server 的实际接口是在客户机和服务器之间对话的“表格数据流”(Tabular Data Stream, TDS) 协议。

一个常见的问题是“什么是 SQL Server 的本机接口呢?”很长时间以来,很多开发人员一直都不愿意使用 ODBC 这样的接口,因为他们认为由 Sybase 开发的客户机 API,也就是 DB-Library,是 SQL Server 的本机接口。实际上,SQL Server 关系服务器本身并没有本机 API,它的接口就是在客户机和服务器之间的通信流协议 TDS。TDS 把客户机发送给服务器的 SQL 语句封装起来,也把服务器返回给客户机的处理结果封装起来。任何直接处理 TDS 的 API 都是 SQL Server 的本机接口。