sql server 体系结构

sql server的体系结构包含四个主要部分:
协议层(protocols);
关系引擎(Relational Engine) 又称为查询处理器(Query Processor);
存储引擎(Storage Eegine);
SQLOS
sql server 体系结构_第1张图片

1.协议层(protocols):
     
用于接收请求,并将请求转换为关系引擎可以处理的形式;获取所有查询结果,状态消息,错误信息,并在返回客户端之前转换为客户端可以识别的形式。
     
服务器和客户端使用Microsoft定义的表格格式数据流(TDS)包格式通信信息
     
对seq server配置可以使其接受来自不同客户端的多个协议,可以使用的协议包括
     
shared memory:最早使用的协议,它只能连接到同一台计算机上运行的seq server 实例,在怀疑其他协议配置不正确的时候可以使用该协议进行故障诊断。      
     
named pipes:仅在局域网内(LAN)提供服务,一个进程的使用一部分内存向其他进程传递信息,也就是说一个进程的输出就是另外一个进程的输入。
     
TCP/IP:最广泛的协议。
     
VIA(Virtual Interface Adapter):仅与VIA硬件一起工作

2.关系引擎(Relational Engine)
  关系引擎也称为查询处理器(Query Processor),它包含sql server组件用于确定查询需要完成的任务以及如何实现才是最佳的方案;关系引擎从存储引擎中请求数据和处理返回结果时,他还管理查询的执行过程。
     
关系引擎和存储引擎的通信一般采用OLEDB(一种应用接口)行集实现(行集是OLDB中的结束语)

关系引擎包括:
命令解析器( Command Parser
用户处理发往sql server的T-sql的语言事件,它检查语法的正确性,并将T-sql命令转化为可进行操作的内部格式。该内部格式被称为查询树( Query Tree )。如果解析器无法识别语法,将立即引起语法错误并出现错误地位置!
查询优化器(Query Optimizer)
  从命令解析器中得到查询树,判断查询树是否可以被优化,并从许多可能中确定一种最优方式,对查询树进行优化。查询优化将编译整个命令批处理,优化可优化的查询并检查安全性,该查询优化和编译产生一个执行计划
     
优化步骤是先规范每一个查询,该过程是将单个查询分解为多个细化查询,查询优化器规范查询之后将为执行查询确定计划。
     
查询优化确定是基于成本的;它基于内部指标消耗最少的资源,内部指标包括 Memory 需求、CPU 利用率和 I/O 操作数量。查询优化器根据请求语句类型查看相关表的数量,索引,然后引用每个索引或列的数据值采样。数据值采样名为分统计信息,根据可用的信息查询优化器分析可用的访问方法和处理策略选择成本效益最高的计划。
     
查询优化器还会使用修剪的方法以确保优化查询的时间不会比简单选择并执行计划花费的时间长。
     
完成规范化和优化以后,这些优化过程产生的规范树将编译成执行计划,执行计划实际上上是数据结构。执行计划包括精确的指定涉及哪些表,使用哪些索引,检查哪些安全性,以及哪些条件等。除了实际的命令,执行计划还包括必须执行的步骤,如果操作包含触发器还要追加触发器的调用过程等。
查询执行器(Query Executor)
  运行查询优化器产生的执行计划,在执行计划中充当所有命令的调度程序,并跟踪每个命令执行的过程。大多数命令需要与存储引擎进行交互,以检索或修改数据等。
3.存储引擎
  存储引擎包括涉及访问和管理数据的所有组件,包括:
访问方法(Access Methods)
sql server 在查询数据时需要调用访问方法代码,访问方法代码实际上并不检索页面,它向管理缓冲器发送请求,最后缓冲管理器在其缓存中提供页面,或者将页面从磁盘中读取数据到缓存。不仅select可以使用访问方法代码,有些update;delete(含有where等条件查询)以及需要修改索引数据条目的任何数据修改操作都可以使用访问方法代码。下面列出了一些访问方法:
行和索引操作: 负责操作和维护磁盘上的数据结构,也就是数据行和 B 树索引。
页分配操作:每个数据库都是 8KB 磁盘页的集合,这些磁盘页分布在多个物理文件中。SQL Server 使用 13 种磁盘页面结构,包括数据页面、索引页面等。
版本操作: 用于维护行变化的版本,以支持快照隔离(Snapshot Isolation)功能等。
锁管理器(Lock Manager)
用于控制表,页面,行和系统数据的锁定,负责在多用户环境下解决冲突问题,管理不同类型锁的兼容性,解决死锁问题,以及根据需要提升锁(Escalate Locks)的功能。
事务服务(Transaction Services)
事物必须满足四个属性,被称为ACID属性
原子性(Atomicity);一致性(Consistency);
隔离性(Isolation);持久性(Durability)
预写日志(write-ahead logging):预写日志功能确保在真正发生变化的数据页写入磁盘前,始终先在磁盘中写入日志记录,使得任务回滚成为可能。写入事务日志是同步的,即 SQL Server 必须等它完成。但写入数据页可以是异步的,所以可以在缓存中组织需要写入的数据页进行批量写入,以提高写入性能。
SQL Server 支持两种并发模型来保证事务的 ACID 属性:
乐观并发: 假设冲突始终会发生,通过锁定数据来确保正确性和并发性。
悲观并发: 假设不会发生冲突,在碰到冲突再进行处理。
实用工具(Controlling Utilities)
中包含用于控制存储引擎的工具,如批量加载(Bulk-load)、DBCC 命令、全文本索引管理(Full-text Index Management)、备份和还原命令等。
4.SQLOS
sqlos是单独的引用层,它位于sql server 数据引擎的最低层。sqlos的主要函数(作用)有:
计划(调度);内存管理;同步;内存代理;
异常处理;死锁检测;扩展事件;异步I/O
5.查询的语句运行
一个查询语句在sql server中运行的基本步骤如下:
sql server 体系结构_第2张图片

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30798113/viewspace-2131317/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/30798113/viewspace-2131317/

你可能感兴趣的:(sql server 体系结构)