原文:初涉SQL Server性能问题(1/4):服务器概况

当你作为DBA时,很多人会向你抱怨:“这个程序数据加载和蜗牛一样,你看看是不是服务器出问题了?”造成这个问题的原因有很多。可能是程序应用服务器问题,网络问题,程序实现方式问题,数据库服务器负荷过重。不管是哪个问题,数据库总是第一个被抱怨的。我们DBA的职责就是找出问题所在,并解决它们。

问题解决第一步,诊断分析:

1 SELECT
2 parent_node_id                  AS Node_Id,
3 COUNT(*)                        AS [No.of CPU In the NUMA],
4 SUM(COUNT(*)) OVER()            AS [Total No. of CPU],
5 SUM(runnable_tasks_count )      AS [Runnable Task Count],
6 SUM(pending_disk_io_count)                    AS [Pending disk I/O count],
7 SUM(work_queue_count)          AS  [Work queue count]
8 FROM sys.dm_os_schedulers WHERE status='VISIBLE ONLINE' GROUP BY parent_node_id

返回结果说明:

  • 如果返回的是一条记录,说明服务器不支持NUMA架构,否则记录数就是NUMA架构的节点数(NUMA:非均匀访存模型)。
  • Node_id:NUMA节点id。
  • No.of CPU in the NUMA:分配给NUMA节点的CPU数,或调度数( number of schedulers)。
  • Total No. of CPU:服务器上可用CPU总数。
  • Runnable Task Count:在可运行队列里,等待被重现调度的,用于分配任务(tasks)的工作者(workers)数。即,可运行队列里请求数。
  • Pending disk I/O count:等待被完成的等待IO数。每个调度都有一个等待IO清单,用于判断它们在上下文切换时是否完成。当请求被插入时,这个数字会增加。请求完成后,数字会减少。
  • Work queue count:等待队列里的任务数。这些任务等待工作者拿走。

我会把这个脚本的输出结果存到一张表,并设置为计划任务每10分钟运行一次,收集运行2天。这样我们对服务器的运行状况就有了基本的了解。在我测试的服务器上,当Runnable Task Count一直在10的时候,用户就是抱怨服务器慢!正常情况,每个节点的这个数字应该低于10。这就给了我们当前系统运行的大致情况。如果这一步的输出结果是正常的,我们就可以排除数据库服务器的问题了,响应慢的问题可能是我们不能控制的阻塞造成的,或者只是部分会话响应慢,而不是整个服务器慢。

这就是我们第1步的问题分析诊断方法,接下来的文章会具体解释后续该如何处理。

附图2张,帮助大家理解任务(tasks)、工作者(works)、调度(schedulers)之间的关系。

对于每个CPU,SQLSERVER都会有一个scheduler与之对应。在每个scheduler里,会有若干个worker,对应于每个线程。在客户端发过来请求之后,SQL会将其分解成一个或多个task。根据每个scheduler的繁忙程度,task会被分配到某个scheduler上。如果scheduler里有空闲的worker,task就会被分配到某个worker上。如果没有,scheduler会创建新的worker,供task使用。如果scheduler里的worker已经到了他的上限值,而他们都有task要运行,那么新的task只好进入等待worker的状态。

初涉SQL Server性能问题(1/4):服务器概况相关推荐

  1. sql server服务器 性能,初涉SQL Server性能问题(1/4):服务器概况

    当你作为DBA时,很多人会向你抱怨:"这个程序数据加载和蜗牛一样,你看看是不是服务器出问题了?"造成这个问题的原因有很多.可能是程序应用服务器问题,网络问题,程序实现方式问题,数据 ...

  2. 初涉SQL Server性能问题(3/4):列出阻塞的会话

    原文:初涉SQL Server性能问题(3/4):列出阻塞的会话 在 初涉SQL Server性能问题(2/4)里,我们讨论了列出等待资源或正运行的会话脚本.这篇文章我们会看看如何列出包含具体信息的话 ...

  3. SQL Server 性能调优3 之索引(Index)的维护

    SQL Server 性能调优3 之索引(Index)的维护 热度1 评论 16 作者:溪溪水草 SQL Server 性能调优3 之索引(Index)的维护 前言 前一篇的文章介绍了通过建立索引来提 ...

  4. SQL Server 性能调优(cpu)

    SQL Server 性能调优(cpu) 研究cpu压力工具 perfom SQL跟踪 性能视图 cpu相关的waitevent Signal wait time SOS_SCHEDULER_YIEL ...

  5. SQL Server 性能调优(方法论)

    SQL Server 性能调优(方法论) 目录 确定思路 wait event的基本troubleshooting 虚拟文件信息(virtual file Statistics) 性能指标 执行计划缓 ...

  6. sql server 性能_SQL Server硬件性能调整

    sql server 性能 SQL Server Performance Tuning can be a difficult assignment, especially when working w ...

  7. collector_使用Data Collector监视SQL Server性能

    collector 什么是SQL Server数据收集器 (What is SQL Server Data Collector) SQL Server数据收集器是SQL Server Manageme ...

  8. sql server 性能_如何在SQL Server中收集性能和系统信息

    sql server 性能 介绍 (Introduction) In this article, we're going through many of the tools we can use fo ...

  9. sql server 性能_SQL Server性能基础

    sql server 性能 "The goal of monitoring databases is to assess how a server is performing. Effect ...

最新文章

  1. 使用vue2.0 vue-router vuex 模拟ios7操作
  2. windows7现实计算机内存不足,win7旗舰版系统提示系统内存不足的解决方法
  3. oracle 日期类型显示毫秒
  4. ubuntu 14.04 安装chrome及给chromium 安装 flash player
  5. python语言发展历时_编程语言十年发展史
  6. Win2003下架构Mrtg服务器
  7. springboot2源码2-SpringApplication运行
  8. java不带括号_java – 打印数组,不带括号和逗号
  9. mysql5.5.53安装教程_mysql5.5.28安装教程 超详细!
  10. 富文本编辑器(UEditor)的使用
  11. kettle 数据库密码解密
  12. 弘辽科技:拼多多批发价格会影响活动价格吗?商家要不要改价?
  13. pert计算公式期望值_计划评审技术(PERT)求工期、标准差、方差以及概率
  14. recv 函数返回值说明
  15. 海南大学考研经验之(考研英语)
  16. 关于web服务器硬件配置
  17. 虚幻开发工具包发布版本的版本信息
  18. 计算机excel中钱的符号,在excel中输入钱的符号
  19. C# 读取和输出asc文件
  20. 佛祖保佑永无BUG python版本

热门文章

  1. 软件需求分析--三步走
  2. asp.net在线压缩和解压缩的实现
  3. 基于python的大数据分析实战学习笔记-pandas(数据分析包)
  4. Windows下利用TortoiseSVN搭建本地SVN服务器
  5. C++程序设计(第二版)谭浩强----程序题课后习题答案第二章
  6. Rancher-创建自己的应用商店教程
  7. Android IOS WebRTC 音视频开发总结(七四)-- WebRTC开源5周年了,Google怎么看?
  8. 【原创】Python 源文件编码解读
  9. 使用tolua++编译pkg,从而创建自定义类让Lua脚本使用
  10. 为什么在中国“公有云”落地那么难?