SQL Server 2005查询处理结构-用户模式计划(UMS)
SQL Server 2005查询处理结构-用户模式计划(UMS)
在对数据库进行性能调优时,必须全面的考虑各种可能造成系统性能瓶颈的各种因素,因此深入了解SQL Server 2005的查询处理机构是非常有必要的。下面,我就重点介绍一下用户模式计划(UMS)。
SQL Server 使用协同多处理器模式取代了对称多处理器模式。这两种处理模式之间最大的区别在于处理器处理计划方式不同。在协同模式下,同一时间在一个处理器上只能运行一个线程,并且当这个线程没有任务要运行时,就会放弃对处理器的控制权。在这种方式下,可以允许多个线程相互协同使实际执行的任务数量最大化。
控制这个协同行为是用户模式计划(User Mode Scheduler ,UMS)的任务。SQL Server启动时,会为每个逻辑的或物理的处理器创建一个UMS,并且这个UMS可以在系统中使用。这样,SQL Server就可以通过UMS执行自己的计划,而不是将线程发送到操作系统,由操作系统按计划在处理器上执行,认识到这一点是非常重要的。
创建一个SQL Server的连接时,它对应的SPID就会分配到UMS。这个分配的进程就会采用一个基本的平衡算法,以实现尽可能的将进程平均的分散在多个UMS中。尽管一个连接请求通常会在同一个UMS中执行,但是这个请求通常会在同一UMS中执行,但是这个请求还是有可能在任何可用的UMS中处理。
每个UMS都使用三个队列来处理查询:可执行的、正在执行的和等待中的。队列中的线程遵循先进先出的原则。当一个查询执行时,会为它分配一个线程并将这个线程放入到可执行的队列中,可执行队列中的线程会占用处理器。如果线程需要等待I/O、网络或内存等资源的配置时,它就会停止处理器的占用,并移入等待中的队列。
等待分配资源的线程会一直保存在等待的队列中。这是,SQL Server会跟踪这个线程等待的时间量,并用等待时间表示,当分配的资源得到时,就用等待的类型表示。一旦得到分配的资源,这个线程就会从等待队列中转入可执行的队列的底部。一个进程从可执行的队列到转入处理器上之前所花费的时间叫一次等待。
处理器计划的内部执行步骤:
(1)查询首先必须被编译,需要内存和处理器资源;
(2)编译过的计划必须保存在查询缓存中, 需要内存和处理器资源;
(3)执行计划会转入到处理器中以执行这个查询,需要内存、处理器资源和潜在的磁盘I/O;
(4)当查询读/写数据时,必须建立锁,可能需要更多的内存、处理器资源和磁盘I/O
(5)查询的结果必须打包并传送回客户端,需要内存、处理器资源和网络I/O;
由以上步骤可看,内存必须至少被分配5次。如果系统内存紧张,这个进程就不得不每次都要等待所需要的内存分配,这也就导致了需要5次转入到等待的队列中,然后又需要5次转回到可执行队列。如果发生这样的情况,每次资源的分配都会增加查询的持续时间,查询效率就会降低,形成内存瓶颈。同样道理,CPU、磁盘I/O、内存、锁都会出现这样的情况。
转载于:https://www.cnblogs.com/dbasys/archive/2009/01/08/1371784.html
SQL Server 2005查询处理结构-用户模式计划(UMS)相关推荐
- 剖析SQL Server 2005查询通知之基础篇
剖析SQL Server 2005查询通知之基础篇 注:这是本人转载的文章. 摘要 在本系列文章中,我们将深入探讨如何把.NET 2.0和SQL Server 2005的查询通知特征联合起来,以便通知 ...
- SQL Server 2005系列教学(14) 用户管理
用户管理: 哪些用户可以使用: 一种是WINDWOS 一种是SQL SERVER用户 身份验证方式: windows验证: 安全,但不灵活 混合验证(WINDOWS SQL SERV ...
- SQL Server 2005系列教学_用户管理
用户管理: 哪些用户可以使用: 一种是WINDWOS 一种是SQL SERVER用户 身份验证方式: windows验证: 安全,但不灵活 混合验证(WINDOWS SQL SERV ...
- 在SQL Server 2000 和SQL Server 2005中导出表结构
SQL Server 2000 SELECT 表名 = case when a.colorder=1 then d.name else '' end, 表说明 = ...
- SQL Server 2005 查询处理器未能为执行并行查询启动必要的线程资源。
今天早上程序突然报: Microsoft OLE DB Provider for SQL Server 错误 '80040e14' 查询处理器未能为执行并行查询启动必要的线程资源. 赶快重启了sql服 ...
- Microsoft SQL Server 2005 查询分页
微软新的SQL Server 2005新增了数据库分页功能,以后再也用写复杂不灵活而低效率的分页存储过程. 新的数据库分页功能的核心是一个叫row_number的函数 具体如下: 返回结果集分区内行的 ...
- Sql Server 2005 获取表结构信息
SELECT 表名 = CASE a.colorder WHEN 1 THEN c.name ELSE '' END, 序 = a.colorder, 字段名 ...
- 浅析SQL Server 2005中的主动式通知机制
一.引言 在开发多人同时访问的Web应用程序(其实不只这类程序)时,开发人员往往会在缓存策略的设计上狠下功夫.这是因为,如果将这种环境下不常变更的数据临时存放在应用程序服务器或是用户机器上的话,可以避 ...
- mysql桦仔_Microsoft SQL Server 2005技术内幕:T-SQL查询笔记
Microsoft SQL Server 2005技术内幕:T-SQL查询笔记 目录 f f f f f f f f 第二章 物理查询处理 分析,代数化,查询优化 f f f f f. 分析--> ...
最新文章
- 计算机辅助焊接过程控制,重型车辆计算机辅助焊接工艺自动设计系统.pdf
- poj3683(2-SAT)
- linux 加密可逆,RSA加密是可逆的吗
- 网站内容优化——什么样的文章可以帮助提升网站优化水平呢?
- Java final、static final 讲解
- GDCM:gdcm::StreamImageReader的测试程序
- 交错字符串Python解法
- 专题突破之反悔贪心——建筑抢修,Cow Coupons G, Voting (Hard Version),Cardboard Box
- 【LeetCode - 141142】环形链表(i和ii)(快慢指针,链表)
- lisp提取长方形坐标_语义SLAM | 深度学习用于特征提取 : SuperPoint(一)
- Docker禁令生效,开始限制所有被美国列入实体清单的公司和个人使用Docker
- CSS元素隐藏原理和效果小结
- windows10强制删除文件_如何恢复按下Shift + DELETE键永久删除的文件和资料夹?
- JavaWeb图书管理系统+论文+答辩ppt
- iOS 获取通讯录权限和权限提示弹框
- win10本机计算机策略,[本地策略组怎么打开]win10本地组策略打开方法
- ISP PIPLINE 概述
- 天行健---宇宙的生与死
- vs code常用的插件
- linux之shell脚本
热门文章
- STM32F4 HAL库开发 -- STM32CubeMX
- 【DM8168学习笔记5】EZSDK目录结构
- CoinU基本概念分享(什么是去中心化钱包、助记词丢失怎么办等)
- 【译】Diving Into The Ethereum VM Part 5 — The Smart Contract Creation Process
- 区块链共识算法 PBFT(拜占庭容错)、PAXOS、RAFT简述
- [Android]用架构师角度看插件化(3)-Replugin 需要占坑跳转?
- Get Cache Info in Linux on ARMv8 64-bit Platform
- GAN在Image To Image translation 和Inverse Problem中的应用
- 品茗论道说广播(Broadcast内部机制讲解)
- Android6.0的Looper源码分析(1)