时间:2021-07-01 10:21:17 帮助过:9人阅读
Components of the SQL Server Engine SQL Server 主要有四个组件: The relational engine Query processor The storage engine SQLOS Protocol layer (没有出现在下图中) 无论通过哪种客户端工具提交的批处理语句到SQL Server中都要与这四个组件进行交互.
Components of the SQL Server Engine
SQL Server 主要有四个组件:
无论通过哪种客户端工具提交的批处理语句到SQL Server中都要与这四个组件进行交互.
Observing Engine Behavior
SQL Server 2008 包含了一套系统对象可以允许开发者或者管理员深入的了解SQL Server内部信息. 这些对象就是动态管理对象 Dynamic Management Objects,它们包含各种各样的视图和函数, 但是大多数都是视图, 所有我们也叫它们动态管理视图 Dynamic Management Views. DMVs 在SQL Server 2008的每一个数据库中都存在,但是它们并不是真正存在于磁盘上的表,它们只是基于SQL Server内部的一些结构.
从这些对象中可以获取在多个会话,事务或者用户请求的过程中服务器端状态的变化信息,这样就可以使用这些对象来作一些诊断,内存以及处理器的调优或者在所有的会话中监控一些内容.
可以对它们作一些简单的分类:
Protocols 协议
SQL Server 服务器可以同时支持来自于不同客户端的不同的协议,每一个客户端都只使用一种协议与SQL Server交互. 如果客户端程序不知道 SQL Server正在监听哪一种协议,那么你可以尝试依次使用不同的协议与服务器连接,目前有如下这些协议可供使用:
Tabular Data Stream Endpoints
SQL Server 2008 也允许你创建 TDS端点, 这样SQL Server监听器就可以监听额外的TCP端口.在配置的时候, SQL Server 会自动为上面的四种协议都创建端点,如果协议启用了,那么用户就可以访问.如果协议禁用了,那么即使端点存在但用户也不能访问.
The Relational Engine
前面已经提到关系型引擎也被叫做 Query processor 查询处理器,因为在这里面SQL Server将决定你的查询语句将最终如何被执行.有两个非常重要的组件, 一个是Query Optimization 查询优化器, 一个是 Query Execution 查询执行器. 在整个查询处理器中或者在整个数据产品中 Query Optimizer 是最为复杂的一个组件,它决定了是哪种执行计划将被执行,中间的过程也比较复杂.
关系引擎同时也是一个承上启下的组件,因为它要管理从存储引擎返回的查询数据并且处理这些返回的结果.而关系引擎和存储引擎是通过OLE DB row sets 联系在一起的.
关于关系引擎中的Command Parser, Query Optimizer, Query Executor 等概念和细节请参考我的另一篇 随笔笔记
http://www.cnblogs.com/biwork/archive/2013/04/11/3015655.html
The Storage Engine
存储引擎包括所有参入到数据的访问和管理的所有组件,在SQL Server 2008中,存储引擎主要是由3部分内容组成的: Access methods, locking and transaction services 和 utility commands.
Access methods
当SQL Server需要定位数据的时候,它就调用了Access methods的代码,这些代码就会组建和访问扫描数据页和索引页并且准备 OLE DB row sets来返回到关系引擎.
同样的,当数据被插入时,access methods 就能从客户端收到 OLE DB row set.
Access methods code 包含了打开表,抽取合适数据,更新数据等组件. Access methods code 并不是真正去抽取页,它发送请求到缓冲管理器,由缓冲管理器最终将页的数据读取到缓存中或者从磁盘上将数据读取到缓存中. 当扫描开始的时候, 有一个 look-ahead 这样的机制取得页上行或者索引的入口,被检索的行一旦满足被检索的条件就被称为是有效的检索.Access method 不仅仅是为 SELECT语句服务, 对于其它的符合条件的 UPADATE,DELETE等操作都有效,比如说带了WHERE条件的语句它也起作用,还有就是为那些有需要修改索引入口的一些修改操作.
Access method的分类:
查看更多 SQL Server Internal 笔记 - Microsoft SQL Server 2008 Internals 读书笔记