FocusBI: SQL Server内核
关注微信公众号:FocusBI 查看更多文章;加QQ群:808774277 获取学习资料和一起探讨问题。
《商业智能教程》pdf下载地址
链接:https://pan.baidu.com/s/1f9VdZUXztwylkOdFLbcmWw 密码:2r4v
了解SQL Server 内部组件是如何运作对学习BI是非常有帮助的,它是BI数据的主要来源。
一:SQL Server 网络接口(SNI)是一个协议层,负责建立客户端和服务器之间的网络连接。SQL Server支持的协议有: 共享内存、TCP/IP、命名管道 等,这里我讲一下 TCP 协议的三次握手和四次挥手,TCP端口默认1433,UDP端口默认1434
二:SQL Server 由两个主要引擎组成:关系引擎和存储引擎。
关系引擎有时称为查询处理器,因为关系引擎的主要功能是进行查询的优化和执行。关系引擎包含三个主要部分,命令解析器、查询优化器和查询执行器。命令解析器用于检查查询命令的语法和生成查询树,查询优化器大概是任何数据库系统中最重要的一部分,查询执行器负责查询命令的执行。
存储引擎负责管理与数据相关的所有I/O操作,包括访问方法和缓冲区管理器。其中,访问方法负责处理行、索引、页、分配和行版本的I/O请求;缓冲区管理器负责缓冲池的管理,缓冲池是SQL Server 内存的主要使用者。存储引擎还包含了一个事物管理器,负责数据的锁定以实现ACID(原子性、一致性、隔离性、持久性)属性中的隔离性,并负责管理事物日志。
缓冲池是SQL Server内存最大的使用者。缓冲池中包含了SQL Server 中所有类型的缓存,包括计划缓存和数据缓存。比如当你查询一个关联语句时如果它开机后没有执行过,查询时会消耗一点时间,如果开机后又查询过在去查询速度会很快,它没有去查询数据库文件而是去的内存中缓存下来的数据。
三:磁盘上的数据文件和日志文件。
这里已一个简单的查询(select)和更新(update)的生命周期为例
简单的查询
- 客户端的SQL Server 网络接口(SNI)通过只用网络协议,例如TCP/IP与SQL Server服务器端的SNI建立了一个连接,然后通过TCP/IP连接和TDS端点创建一个连接,并通过这个连接向SQL Server以TDS消息的形式发送select语句。
- SQL Server的SNI将TDS消息解包,读取select 语句,然后将这个SQL命令发送给命令解析器。
- 命令解析器在缓冲池的计划缓存中检查是否已经存在了一条与接收到的语句匹配且可用的查询计划。如果找不到命令解析器则基于select语句生成一个查询树,然后将查询树传递给查询优化器,让它生成查询计划。
- 由于这条查询命令比较简单,查询优化器仅在预优化阶段就生成了“零开销”的查询计划(或称为“普通”查询计划)。查询优化器将创建出来的查询计划发送给查询执行器执行。
- 查询执行器在执行查询计划的时候,首先确定完成这个查询计划需要读取什么数据,然后通过OLE DB 接口向存储引擎中的访问方法发送访问请求。
- 为了完成查询执行器的请求,访问方法需要从数据库中读取一个数据页面,并要求缓冲区管理器提供这个数据页面。
- 缓冲区管理器在数据缓存中检查这个数据页是否已经存在。由于这个页面并没有在缓存中,因此缓冲区管理器首先从磁盘上获取这个数据页面,然后将其存入缓存,并传回给访问方法。
- 最后,访问方法将结果集传递给关系引擎,由关系引擎将结果集发送给客户端。
简单的更新
更新与查询的前面步骤是一样的,到了访问方法这一步,事物管理器会将更新操作写入日志管理器中,只有在确定操作已经成功写入了事物日志之后,才能够执行真正的数据修改操作。所以事物日志的性能很关键,一旦访问方法接收到确认信息,就将修改数据的请求发送给缓冲区管理器,由缓冲区管理器完成修改数据的操作。
历史文章:
FocusBI: 使用Python爬虫为BI准备数据源(原创)
FocusBI关注者
FocusBI:SSAS体系结构(原创)
FocusBI:租房分析&星型模型
FocusBI:地产分析&雪花模型
FocusBI:MDX检索多维模型
FocusBI:租房分析可视化(网址体验)
FocusBI: 《DW/BI项目管理》之数据库表结构 (原创)
FocusBI: SQL Server内核的更多相关文章
- [转载]SQL Server内核架构剖析
原文链接:http://www.sqlserver.com.cn 我们做管理软件的,主要核心就在数据存储管理上.所以数据库设计是我们的重中之重.为了让我们的管理软件能够稳定.可扩展.性能优秀.可跟踪排 ...
- SQL Server内核架构剖析与NUMA
http://www.cnblogs.com/lyhabc/p/4272053.html http://www.cnblogs.com/lyhabc/archive/2013/02/05/289247 ...
- SQL SERVER 2012 从Enterprise Evaluation Edtion 升级到 Standard Edtion SP1
案例背景:公司从意大利购买了一套中控系统,前期我也没有参与其中(包括安装.实施都是第三方),直到最近项目负责人告诉我:前期谈判以为是数据库的License费用包含在合同中,现在经过确认SQL Serv ...
- SQL SERVER 2014 各个版本支持的功能
转自:https://technet.microsoft.com/library/cc645993 转换箱规模限制 功能名称 Enterprise Business Intelligence Stan ...
- sql server 对象资源管理器(二)
SQL会缓存大量的数据页面,他还会缓存很多其他信息,包括存储过程的执行计划 ,特定用户的安全上下文等 如果这些信息没有在数据库中缓存,SQL都要重新计算一遍,花额外的时间,所以SQLSERVER对内存 ...
- 查看MS SQL SERVER 错误日志
查看目的: 错误日志的查看是确保过程已成功完成(例如,备份和恢复操作,批处理命令,或其他脚本和过程).这可以帮助检测任何当前或潜在的问题,包括自动恢复信息(尤其是如果SQL Server实例已停止并重 ...
- (转)SQL Server 性能调优(cpu)
摘自:http://www.cnblogs.com/Amaranthus/archive/2012/03/07/2383551.html 研究cpu压力工具 perfom SQL跟踪 性能视图 cpu ...
- 一名小小的SQL Server DBA想谈一下SQL Server的能力
一名小小的SQL Server DBA想谈一下SQL Server的能力 百度上暂时还没有搜索到相关的个人写的比较有价值的文章,至少在中文网络的世界里面没有 但是在微软的网站有这样一篇文章:<比 ...
- SQL Server 2014新特性——基数评估(白皮书阅读笔记)
基数评估 目录 基数评估 说明 基数评估准确的重要性 模型假设 启用新的基数评估 验证基数评估的版本 在迁移到新的基数评估前要测试 校验基数评估 偏差问题 需要手动处理的变化 避免因为新的CE造成性能 ...
随机推荐
- Reporting Service服务SharePoint集成模式安装配置(6、安装Reporting services Add-in for SharePoint 外接程序)
第五步骤 : 安装Reporting services Add-in for SharePoint 外接程序 RS 外接程序是在 SharePoint 服务器上运行用于 SharePoint 产品的 ...
- Centos 7 修改默认的运行级别
Runlevel System State 0 Halt the system 1 Single user mode 2 Basic multi user mode 3 Multi user mode ...
- 27款经典的CSS框架
利用 CSS 框架,可以简化你的工作,提高工作效率.CSS 框架是一系列 CSS 文件的集合体,包含了基本的元素重置,页面排版.网格布局.表单样式.通用规则等代码块.下面给你推荐了27款优秀的CSS框 ...
- Elasticsearch(1.1.1)基础教程pdf
基础概念 Elasticsearch有几个核心概念.从一开始理解这些概念会对整个学习过程有莫大的帮助. 接近实时(NRT) Elasticsearch是一个接近实时的搜索平台.这意味着, ...
- RobotFramework的Setup和Teardown
测试套件级别的Setup会在本套件测试用例集合执行前先执行,同理Teardown会在本组所有用例执行完成后运行 测试用例级别的Setup会在本条测试用例执行前先执行,同理Teardown会在本条用例执 ...
- Spring Boot - 记录日志
比自己写文本日志的好处 默认定义好了一些日志级别,会记录当前使用的级别以上的日志,通常线上环境设置的级别较高记得较少 有一些自动split之类的功能 Commons-logging 日志级别:TRAC ...
- 关于C# 向TIM或者QQ自动发送中文消息【微信也是可用的】 附测试GIF中微信可用的 全新修订
在上一篇文章的代码 对于微信已失效 重新更新一边 效果图: 源代码 using System; using System.Runtime.InteropServices; using System.T ...
- C# combobox手动赋值
DataTable dt = new DataTable(); dt.Columns.Add("REPAIR_VALUE"); dt.Columns.Add("REPAI ...
- 树莓派 Raspbian
备注,从右往左分别是:无线鼠标一个, HDMI转VGA接口一个,网线一根,小米充电宝电源线一个.树莓派Pi 3 一台,包括读卡器一个+32G class10 SD卡一块.最后俩个U盘作为备用里面有Ar ...
- UITableView编辑模式
UITableView有两种模式,普通模式和编辑模式.在编辑模式下可以对cell进行排序.删除.插入等等. 如何进入编辑模式 调用tableView的setEditing(editing: Bool, ...