与其他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由两个主要组件组成:
- 数据库引擎(Database Engine)
- SQLOS
数据库引擎
SQL Server的核心组件是数据库引擎。 数据库引擎由处理查询的关系引擎和管理数据库文件,页面,索引等的存储引擎组成。数据库引擎也创建并执行数据库对象,如存储过程,视图和触发器。
关系引擎
关系引擎包含确定执行查询的最佳方式的组件。 关系引擎也称为查询处理器。关系引擎基于输入查询从存储引擎请求数据并处理结果。
关系引擎的一些任务包括查询处理,内存管理,线程和任务管理,缓冲区管理和分布式查询处理。
存储引擎
存储引擎负责存储和检索来自存储系统(如磁盘和SAN)的数据。
SQLOS
在关系引擎和存储引擎下是SQL Server操作系统或SQLOS。
SQLOS提供许多操作系统服务,如内存和I/O管理。 其他服务包括异常处理和同步服务。
协议层,为SQL Server最外层,是应用程序(application)向SQL Server访问的接口。
其中,Protocols是使用TDS来规范通讯格式 (TDS是一种数据格式,用来给protocols接收/解析data),故application需要把自己想发的数据转成TDS的数据格式,才能再通过网络发给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的是否有开启。
查询处理器,又称关系引擎(Relational Engine),为SQL Server中间层也是最核心部分之一,用来分析Query和寻找适合的plan,并执行它(若在这过程中需要数据,则会向Storage Engine发送数据请求)。
大致上Query Processer的处理顺序为
Parsing → Binding → Query Optimization → Query Execution → Query Results
详细说明:
若现在有Query进来,则Query Processor的处理顺序为
- 产生一个逻辑树来分析T-SQL(判断此语法要去哪个source拿资料,是否有join以及是否有filter条件)
- 分析后,把会用到的Object转成ID并连结在一起
- 查看Buffer pool里的Execution Plan Cache 是否有可用的Execution plan
- 若有则会直接用; 如果没有则会产生Query Tree(语法树)
- Query Tree会先判断此Query是否可优化,若是不可再优化的语法则会直接执行(e.g. DDL); 若是可再优化的语法(e.g. DML)则会先mark起来,丢给Query Optimization优化
- 再由Query Optimization产生所有可能的plans,并筛选出最后的Execution plan (过程中若有需要则会向Storage Engine中的Access Methods互相要数据或修改数据)
- 执行最后的Execution plan,并把此plan放入Buffer pool中,以及把刚刚使用到的数据还给Storage Engine
- 以TDS的数据格式将结果传回给application
PS: Buffer pool里有Execution plan cache和data cache
存储引擎,里面包含了Access Methods、Transaction services、Buffer Manager… 等等
Access Methods:
- 创建与扫描资料页和index页
- 对buffer manager发出请求要资料
…
Transaction services: 大致上来说为确保资料正确性
Buffer Manager:管理Buffer Pool的数据
单独的应用层,位在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