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造成性能 ...
随机推荐
- 在Centos 7 上面 安装MySQL 5.7 简录
In a web browser, visit mysql.com page: https://dev.mysql.com/downloads/repo/yum/ Locate the desired ...
- New Year, New Devs: Sharpen your C# Skills
At the beginning of each new year, many people take on a challenge to learn something new or commit ...
- Linux下开放指定端口
今天Linux测试服务器重启了下 结果导致网站打不开了,ip也能ping通 Apache重启成功,telnet了下80端口结果连不上,这就应该是外网80被防火墙拦截了 后面把80端口开发了下可以了,步 ...
- .Net Core 自动化部署:使用jenkins部署到linux docker容器运行
上次我们说到.Net Core 自动化部署:使用docker版jenkins部署dotnetcore应用,这次我们使用jenkins发布我们的.NET Core站点到docker容器中运行,为后面的的 ...
- Mysql数据类型《四》日期类型
日期类型 DATE TIME DATETIME TIMESTAMP YEAR 作用:存储用户注册时间,文章发布时间,员工入职时间,出生时间,过期时间等 YEAR YYYY(1901/2155) DAT ...
- kali linux之Msf-exploit模块,生成payload
Exploit模块 Active exploit(主动地向目标机器发送payload并执行,使目标交出shell(反连等)) msf5 > use exploit/windows/smb/pse ...
- centos下搭建高可用redis
Linux下搭建高可用Redis缓存 Redis是一个高性能的key-value数据库,现时越来越多企业与应用使用Redis作为缓存服务器.楼主是一枚JAVA后端程序员,也算是半个运维工程师了.在Li ...
- 阿里java开发规范学习(附P3C IDEA插件 帮助规范的养成)
浅析 阿里巴巴 Java 开发规约 (未完成) 更加优秀的页面展现请到浅析 阿里巴巴 Java 开发规约 contents 为什么要学 编程规约 P3C IDEA 插件 why-use 我们知道,一般 ...
- 10分钟教你用Python玩转微信之好友性别比例统计分析
01 前言+效果展示 想必,微信对于大家来说,是再熟悉不过的了.那么,大家想不想探索一下微信上的各种奥秘呢?今天,我们一起来简单分析一下微信上的好友性别比例吧~废话不多说,开始干活. 结果如下: 02 ...
- linux上的常用的进程与内存优化命令
进程 ps命令 f 以树状结构显示 u 显示详细信息 a 显示所有进程 -A 显示所有进程 -u 用户名 是显示该用户下的进程 -l 更多进程详细信息 例子1. 以树状结构显示root用户下进程的详细 ...