Troubleshooting SQL Server(CPU使用过高).docx

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Troubleshooting SQL Server(CPU使用过高)

 HYPERLINK /Joe-T/p/3193465.html 《Troubleshooting SQL Server》读书笔记-CPU使用率过高 CPU使用率过高问题很容易被发现,但是诊断却不是很容易。CPU使用过高很多时候会成为其它问题的替罪羊,所以在确认和故障诊断时要抽丝剥茧。 调查CPU压力 三个主要的工具:性能监视器,SQLTrace,DMV. ???? 性能监视器:首先用它来确认是SQL Server还是其它进程使用了过多的CPU。主要计数器有: ???????????????????? Processor/ %Privileged Time :在特权模式下进程线程执行代码所花时间的百分比。基本可以认为是Windows核心使用的CPU ???????????????????? Processor/ %User Time :处理器处于用户模式的时间百分比。应用程序的使用的CPU。 ???????????????????? Process (sqlservr.exe)/ %Processor Time :SQLServer.exe线程使用处理器执行指令所花的时间百分比。 ???????????????????? 还有一些与SQL Server相关CPU消耗的计数器: ???????????????????? SQLServer:SQL Statistics/Auto-Param Attempts/sec ???????????????????? SQLServer:SQL Statistics/Failed Auto-params/sec ???????????????????? SQLServer:SQL Statistics/Batch Requests/sec ???????????????????? SQLServer:SQL Statistics/SQL Compilations/sec ???????????????????? SQLServer:SQL Statistics/SQL Re-Compilations/sec ???????????????????? SQLServer:Plan Cache/Cache hit Ratio ?????? SQLTrace: 通过Profiler生成SQLTrace脚本,进行服务器端跟踪,来获得高CPU使用时详细信息。 ????????????? DMV:a. 使用sys.dm_os_wait_stats来得到signal wait,确认CPU压力的程度. ?????????????????????? b. 使用sys.dm_os_wait_stats和sys.dm_os_schedulers观察等待类型 ?????????????????????? c. 使用sys.dm_exec_query_stats和sys.dm_exec_sql_text找出高CPU使用的执行计划和对应的查询 ?????????????????????? d. 使用sys.dm_os_waiting_tasks观察当前与CPU使用相关等待类型 ?????????????????????? e. 使用sys.dm_exec_requests正在执行的查询的资源使用状况 ? 调查CPU相关的等待统计:请求执行前,包含请求的会话必需等待,SQL Server会记录??待原因和时间。通过sys.dm_os_wait_stats查询这些信息。 ???? 信号等待时间(Signal wait time):sys.dm_os_wait_stats的wait_time_ms表示等待类型的总共等待时间,signal_wait_time_ms表示线程收到段义和到重新执行间的等待时间, ?????????????????????????????????????????????? 这些时间主要花在runnable队列里,是纯CPU等待。 ???? 通过以下查询得到信号等待的时间比率: SELECT SUM (signal_wait_time_ms) AS TotalSignalWaitTime , ( SUM (CAST(signal_wait_time_ms AS NUMERIC(20, 2))) / SUM (CAST(wait_time_ms AS NUMERIC(20, 2))) * 100 ) AS PercentageSignalWaitsOfTotalTime FROM sys .dm_os_wait_stats ???? 也可以查询各类资源等待的比率,下面是等待top 10

文档评论(0)

wyjy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档