SQL Server体系结构

SQL Server是由Microsoft开发和销售的关系数据库管理系统或RDBMS。

与其他RDBMS软件类似,SQL Server构建于SQL之上,SQL是一种用于与关系数据库交互的标准编程语言。 SQL Server与Transact-SQL或T-SQL绑定,后者是Microsoft的SQL实现,它添加了一组专有的编程结构。

SQL Server专门在Windows环境中工作超过20年。 2016年,微软首次推出了Linux版本的SQL Server。 SQL Server 2017于2016年10月普遍发布,可在Windows和Linux上运行。

1. SQL Server体系结构

下图说明了SQL Server的体系结构:

从宏观来看,SQL Server里由四个部分组成,分别是:Protocols、Query Processor 、Storage Engine 、SQL OS。 如下图:(图片来源)

SQL Server的体系结构

SQL Server由两个主要组件组成:

  • 数据库引擎(Database Engine)
  • SQLOS

数据库引擎
SQL Server的核心组件是数据库引擎。 数据库引擎由处理查询的关系引擎和管理数据库文件,页面,索引等的存储引擎组成。数据库引擎也创建并执行数据库对象,如存储过程,视图和触发器。

关系引擎
关系引擎包含确定执行查询的最佳方式的组件。 关系引擎也称为查询处理器。关系引擎基于输入查询从存储引擎请求数据并处理结果。
关系引擎的一些任务包括查询处理,内存管理,线程和任务管理,缓冲区管理和分布式查询处理。

存储引擎
存储引擎负责存储和检索来自存储系统(如磁盘和SAN)的数据。

SQLOS
在关系引擎和存储引擎下是SQL Server操作系统或SQLOS。
SQLOS提供许多操作系统服务,如内存和I/O管理。 其他服务包括异常处理和同步服务。

Protocols

协议层,为SQL Server最外层,是应用程序(application)向SQL Server访问的接口。

其中,Protocols是使用TDS来规范通讯格式 (TDS是一种数据格式,用来给protocols接收/解析data),故application需要把自己想发的数据转成TDS的数据格式,才能再通过网络发给SQL Server接收,如下图。

SQL Server体系结构

更细节的话,可以知道Protocols有分三种连接方式,分别是:Shared memory、Named Pipes、TCP/IP

  • Shared memory:for Local server的application连接SQL Server用
  • Named Pipes:for local area networks (LANs)
  • TCP/IP:for Local 以外的所有application用的

故如果你的application连不上SQL Server,可以根据application的网域,去检查相对应Protocol的是否有开启。

Query Processor

查询处理器,又称关系引擎(Relational Engine),为SQL Server中间层也是最核心部分之一,用来分析Query和寻找适合的plan,并执行它(若在这过程中需要数据,则会向Storage Engine发送数据请求)。

大致上Query Processer的处理顺序为
Parsing → Binding → Query Optimization → Query Execution → Query Results

详细说明:

若现在有Query进来,则Query Processor的处理顺序为

  1. 产生一个逻辑树来分析T-SQL(判断此语法要去哪个source拿资料,是否有join以及是否有filter条件)
  2. 分析后,把会用到的Object转成ID并连结在一起
  3. 查看Buffer pool里的Execution Plan Cache 是否有可用的Execution plan
  4. 若有则会直接用; 如果没有则会产生Query Tree(语法树)
  5. Query Tree会先判断此Query是否可优化,若是不可再优化的语法则会直接执行(e.g. DDL); 若是可再优化的语法(e.g. DML)则会先mark起来,丢给Query Optimization优化
  6. 再由Query Optimization产生所有可能的plans,并筛选出最后的Execution plan (过程中若有需要则会向Storage Engine中的Access Methods互相要数据或修改数据)
  7. 执行最后的Execution plan,并把此plan放入Buffer pool中,以及把刚刚使用到的数据还给Storage Engine
  8. 以TDS的数据格式将结果传回给application

PS: Buffer pool里有Execution plan cache和data cache

Storage Engine

存储引擎,里面包含了Access Methods、Transaction services、Buffer Manager… 等等

Access Methods:

  1. 创建与扫描资料页和index页
  2. 对buffer manager发出请求要资料

Transaction services: 大致上来说为确保资料正确性

Buffer Manager:管理Buffer Pool的数据

SQL OS

单独的应用层,位在SQL Server的最底层。

主要功能为调度资源、分配内存、管理schedule… 等等。

如果SQL Server需要用到SQL OS时,SQL OS会分配工人去处理工作

常用的语法为

  • sys.dm_os_schedulers:查看现在SQL Server有哪些scheduler
  • sys.dm_os_waiting_tasks:可以看到哪些task是正在排队中,以及看到他们在等什么resource

SQL Server服务和工具
Microsoft与SQL Server一起提供数据管理和商业智能(BI)工具和服务。

对于数据管理,SQL Server包括SQL Server Integration Services(SSIS),SQL Server数据质量服务和SQL Server主数据服务。 为了开发数据库,SQL Server提供了SQL Server数据工具; 以及管理,部署和监视数据库SQL Server具有SQL Server Management Studio(SSMS)。

对于数据分析,SQL Server提供SQL Server Analysis Services(SSAS)。 SQL Server Reporting Services(SSRS)提供数据的报告和可视化。 机器学习服务技术首先出现在SQL Server 2016中,该服务器已从R服务重命名。

SQL Server版本
SQL Server有四个主要版本,它们具有不同的捆绑服务和工具。 两个版本免费提供:

  • SQL Server Developer版 – 用于数据库开发和测试。
  • SQL Server Expression版 – 适用于小型数据库,其大小最大为10 GB的磁盘存储容量。
  • 企业版 – 对于更大和更关键的应用程序,SQL Server提供包含所有SQL Server功能的企业版。
  • SQL Server标准版 – 具有Enterprise Edition的部分功能集,并且在服务器上限制了可配置的处理器核心和内存的数量。

[SQL Server] 基本SQL Server架构 | 当Eva搭上DBA航班之后 – 点部落 (dotblogs.com.tw)

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/313817.html

(0)
上一篇 2024年6月18日 16:02
下一篇 2024年6月25日

相关推荐

发表回复

登录后才能评论