视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
SQLServer2008Internal#003SQLServer引擎的协议层关系引
2020-11-09 15:57:11 责编:小采
文档


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 主要有四个组件:

  • The relational engine – Query processor
  • The storage engine
  • SQLOS
  • Protocol layer (没有出现在下图中)
  • 无论通过哪种客户端工具提交的批处理语句到SQL Server中都要与这四个组件进行交互.

  • Protocol Layer 协议层将从客户端发送的请求翻译成SQL Server能识别的指令,并且将查询或者错误结果又从SQL Server中翻译成客户端能理解的信息, 就是一种基于某种协议的信息交换.
  • Relational Engine Layer - 关系型数据引擎层主要用来处理SQL语句,构建,编译或者调优并执行.
  • Storage Engine - 存储引擎 主要是数据的存储管理.
  • SQLOS Layer - 主要是与操作系统交互, 因为这里面涉及到线程的管理,同步,死锁,内存管理等方面,还有缓冲池.
  • Observing Engine Behavior

    SQL Server 2008 包含了一套系统对象可以允许开发者或者管理员深入的了解SQL Server内部信息. 这些对象就是动态管理对象 Dynamic Management Objects,它们包含各种各样的视图和函数, 但是大多数都是视图, 所有我们也叫它们动态管理视图 Dynamic Management Views. DMVs 在SQL Server 2008的每一个数据库中都存在,但是它们并不是真正存在于磁盘上的表,它们只是基于SQL Server内部的一些结构.

    从这些对象中可以获取在多个会话,事务或者用户请求的过程中服务器端状态的变化信息,这样就可以使用这些对象来作一些诊断,内存以及处理器的调优或者在所有的会话中监控一些内容.

    可以对它们作一些简单的分类:

  • dm_exec_* 包含了一些间接或者直接关联到用户语句执行的信息.
  • dm_os_* 包含了一些低级别的信息,比如像内存,所,计划等等.
  • dm_tran_* 和事务相关的信息
  • dm_io_* 网络和磁盘上IO活动的信息
  • dm_db_* 包含了有关数据库和数据库对象的相关信息,比如索引的信息
  • Protocols 协议

    SQL Server 服务器可以同时支持来自于不同客户端的不同的协议,每一个客户端都只使用一种协议与SQL Server交互. 如果客户端程序不知道 SQL Server正在监听哪一种协议,那么你可以尝试依次使用不同的协议与服务器连接,目前有如下这些协议可供使用:

  • Shared Memory - 共享内存协议. 不需要配置, 但是客户端和服务器端必须在同一台机器上.
  • Named Pipes - 命名管道协议. 一种为本地局域网开发的协议 LANs, 在一个进程中使用了一部分内存将信息传递到另外的一个进程, 所以一个进程的输出就是另外一个进程的输入,另外的一个进程可以是本地的也可以是远程的.
  • TCP/IP – TCP/IP 协议在互联网上用的最多.不同网络中不同的硬件或者操作系统等等都可以基于TCP/IP协议进行通信.在 SQL Server 中使用TCP/IP协议需要配置相当多的内容,但是目前大多数网络中的机器都已经进行过适当的配置了.
  • Virtual Interface Adapter(VIA) 一种基于VIA硬件的协议,比较特别,跟机器中硬件有关.
  • 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的分类:

  • Row and Index Operations
  • Page Allocation Operations
  • Versioning Operations

  • 查看更多 SQL Server Internal 笔记 - Microsoft SQL Server 2008 Internals 读书笔记

    下载本文
    显示全文
    专题