Loadrunner学习笔记_线程

原创 2006年05月18日 16:08:00
一般认为SQL Server包含四种Windows服务:MSSqlServer 是最常用的服务,一般的数据库功能都是由它提供的,例如文件管理、查询处理、数据存储等;DTC是分布式事务协调器,支持跨越两个或多个服务器的更新操作来保证事务的完整性;SQLServerAgent负责SQL Server 自动化工作,如果需要SQL Server 在指定时间执行某一个存储过程,就需要用到这个服务了;Search Service是全文查询服务,负责全文检索方面的工作。
 
一个实例就是一组服务(可能是所有服务,也可能是部分服务)。
 
每个 sql server实例都是一个单独的操作系统进程。每个实例都有可能必须处理来自用户的成千上万个并发请求。SQL Server 2000 实例使用 Microsoft Windows® 线程(有时是纤程)有效地管理这些并发任务。每个 SQL Server 2000 实例始终为系统进程运行多个线程。
 
工作线程数是由服务器配置选项 max worker threads 控制的。max worker threads 的默认设置值 255 (最小值10,最大值32767) 对大多数系统是最优的。然而,取决于系统配置,将 max worker threads 设置为一个稍小的值有时会提高性能。
当从客户端收到一批 Transact-SQL 语句时,如果现有的工作线程空闲,就会分配它来执行这个批处理。如果没有空闲的现有工作线程而且工作线程数少于 max worker threads,那么就会分配一个新的工作线程。如果没有空闲的工作线程而且已经达到 max worker threads,那么新的批处理就要一直等到现有工作线程完成其当前批处理任务而空闲为止。当工作线程数达到 max worker threads 时,SQL Server 显示如下消息:
工作线程限制 255 已经达到。
对所有工作线程进行分配,并不意味着 SQL Server 的性能会降低。通常,新的批处理等待空闲线程只需要很短的时间。分配更多的线程可能会降低性能,因为增加的工作需要在线程之间协调资源。
每个 SQL Server 实例都为用户连接维护一个线程池或纤程池。使用的线程越多,维护所需要的资源越多。该值太大反而会影响性能。
  当服务器的内存够多时,配制线程数量 = 最大连接数+5,这样能发挥最大的效率;
否则使用 配制线程数量<最大连接数,启用SQL SERVER的线程池来解决,如果还是数量 = 最大连接数+5,严重的损害服务器的性能。
 
服务器配置 lightweight pooling 选项控制 SQL Server 2000 实例是使用线程还是纤程。默认情况下,lightweight pooling 的设置为 0,在该设置下 SQL Server 实例对每个并发用户命令调度一个线程,直到到达 max worker threads 的值。如果 lightweight pooling 的设置为 1,那么 SQL Server 使用纤程而不是线程。这称为以纤程模式运行。在纤程模式下,SQL Server 实例为每个 CPU 分配一个线程,然后为每个并发用户命令分配一个纤程,最大可以达到 max worker threads 的值。SQL Server 实例在使用线程或纤程时使用相同的算法调度和同步任务。SQL Server 2000 个人版和 SQL Server 2000 Desktop Engine 不支持纤程。
 
 
归纳:
Sql server 对线程的使用也是动态根据需要增减,最大值也设置一个默认值225,对大多数情况下这个值是最优的,但减小该值也可能提高性能,根据实际情况决定。
 
对线程的配置(如下图):
 
对上图的说明〔联机文档〕:
  处理器
指定希望 Microsoft® SQL Server™ 实例使用的处理器。
最大工作线程
指定 SQL Server 进程可用工作线程的最大数目。
在 Windows 上提升 SQL Server 的优先级
指定 SQL Server 实例是否应当比同一计算机上运行的其它进程具有更高的优先级。默认值为 0,其优先级基数为 7。如果将该选项设置为 1,则 SQL Server 在 Microsoft Windows NT® 4.0 或 Windows® 2000 调度程序中以优先级基数 13 运行。建议只在 SQL Server 专用的 Windows NT 4.0 或 Windows 2000 系统上更改该默认值。
[提升sql server 进程的优先级会提高本实例进程的性能,但对其它应用程序和对没有提高优先级的实例的进程产生影响(如果该台服务器上同时运行多个实例的话)]
 
使用 Windows NT 纤程
指定希望 SQL Server 实例使用纤程而非线程。在纤程中,SQL Server 为每个 CPU 分配一个线程,然后为每个并发用户分配一个纤程,直到 max worker threads 值为止。此设置在重新启动服务器后生效。
使用所有可用的处理器
指定希望 SQL Server 将所有可用的处理器都用于并行执行查询。
使用处理器数
指定希望 SQL Server 用于并行执行查询的处理器数。
为允许查询并行执行须满足的最小查询计划阈值
指定 SQL Server 创建和执行并行计划的阈值。只有当同一查询的串行计划的估计执行成本高于此选项的设置值时,SQL Server 才会为该查询创建和执行并行计划。
查看或更改此选项卡上的选项的配置值。如果更改了这些值,单击"运行值"查看更改是否已生效。如果尚未生效,必须重新启动 SQL Server 实例才能使更改生效。
运行值
查看此选项卡上的选项的当前运行值。这些值为只读值。
 
 

查询处理和执行----查询计划

查看查询计划的方式有如下几种: 1、上下文相关的菜单选项   2、set showplan_text on/off   3、set showplan_all on/off 4、...
  • Burgess_Liu
  • Burgess_Liu
  • 2014年01月27日 17:29
  • 1653

并行查询的执行计划解读

查看表的并行度     V$pq—systat      V$pq—sesstat   参数cpu_count   并行操作间关系(执行计划中in-out部分) p-s并行发送数据给串行 p-p(有...
  • haiross
  • haiross
  • 2013年12月19日 10:02
  • 2723

数据库优化查询计划的方法

数据库系统是管理信息系统的核心,基于数据库的联机事务处理(OLTP)以及联机分析处理(OLAP)是银行、企业、政 府等部门最为重要的计算机应用之一。从大多数系统的应用实例来看,查询操作在各种数据库操作...
  • cyjch
  • cyjch
  • 2016年06月02日 18:48
  • 789

java并行执行多个任务

java并行执行多个任务: 最近做项目中,有个任务需要实现并发编程,个人参考了下网上的实现,自己实现了下并发方法,并且增加了简单的说明,希望的有需要的朋友有些帮助。 import java.uti...
  • wangmuming
  • wangmuming
  • 2014年02月24日 17:26
  • 20412

1.3 C++中的并行和多线程

对于多线程并行的标准化支持对于C++来说是一个新东西。只有在C++11中你才可以写不依赖于系统扩展库的多线程程序。为了弄清新C++线程库,了解他的历史是很重要的。  1.3.1 C++多线程的历史 1...
  • chentongxin321
  • chentongxin321
  • 2015年04月03日 17:44
  • 1811

多线程 ---并发与并行概念总结

软件开发,网站开发过程中经常有并发,并行这样的多线程处理与应用。因此,有必要对其进行了解与掌握。多线程: 在了解线程之前,要先知道进程这个概念。进程是一个具有独立功能的程序关于某个数据集合的一次运行活...
  • qq_33290787
  • qq_33290787
  • 2016年06月30日 15:17
  • 8014

loadrunner:多个场景执行顺序

应用场景 假设有3个不同的测试场景,分别为并发登录、核心业务、可靠性测试,3个场景有先后执行顺序。由于白天测试机器另有用处,只能在晚上进行性能测试,这时我们的期望是能否把测试场景都设定好之后晚上自动...
  • he_jian1
  • he_jian1
  • 2014年12月04日 12:46
  • 1590

LoadRunner学习记录-基础篇

LoadRunner学习记录,通过对官方帮助手册,有计划的逐笔学习,并记录下自己学习的过程。第一次学习的目标是基础概念。...
  • cafardhaibin
  • cafardhaibin
  • 2016年03月23日 11:24
  • 1205

GreenPlum的并行查询优化策略

1、GreenPlum这种share nothing的架构:   良好的发挥了廉价PC的作用。自此I/O不在是DW的瓶颈,相反网络的压力会大很多。但是greenplum的查询优化策略能够避免尽...
  • heqiyu34
  • heqiyu34
  • 2015年02月28日 15:13
  • 3478

C#实现终止正在执行的线程

这篇文章主要介绍了C#实现终止正在执行的线程的方法,针对临界资源等容易出现错误的地方进行了分析,并提出了改进方案与实例,需要的朋友可以参考下. 本文实例讲述了C#实现终止正在执行的线程的实现...
  • zhu2695
  • zhu2695
  • 2016年12月05日 14:07
  • 3445
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Loadrunner学习笔记_线程
举报原因:
原因补充:

(最多只允许输入30个字)