开发者社区> fanr_zh> 正文

如何检查SQL Server CPU瓶颈

简介: --检测CPU压力的一个方法是计算运行状态下的工作进程数量,--通过执行如下的DMV查询可以得到这个信息 SELECT COUNT(*) AS workers_waiting_for_cpu,t2.
+关注继续查看

--检测CPU压力的一个方法是计算运行状态下的工作进程数量,
--通过执行如下的DMV查询可以得到这个信息


SELECT COUNT(*) AS workers_waiting_for_cpu,t2.scheduler_id
FROM sys.dm_os_workers AS t1, sys.dm_os_schedulers AS t2
WHERE t1.state='RUNNABLE' AND
t1.scheduler_address
= t2.scheduler_address AND
t2.scheduler_id
<255
GROUP BY t2.scheduler_id

--也可以执行如下的查询得到工作进程在可运行状态下花费的时间

SELECT SUM(signal_wait_time_ms) FROM sys.dm_os_wait_stats

--下面是一个DMV查询,它可以用来找出每次执行中占用CPU最多的钱10为查询,
--也列出了SQL语句的查询计划及计划被执行的次数。如果一个查询大家虽高,
--但执行次数少,那也可以采纳。


SELECT TOP 10
total_worker_time
/execution_count AS avg_cpu_cost, plan_handle,execution_count,
(
SELECT SUBSTRING(text,statement_start_offset/2+1,
(
CASE WHEN statement_end_offset=-1
THEN LEN(CONVERT(NVARCHAR(max),text))*2
ELSE statement_end_offset
END -statement_start_offset)/2)
FROM sys.dm_exec_sql_text(sql_handle)
)
AS query_text
FROM sys.dm_exec_query_stats
ORDER BY [avg_cpu_cost] DESC

--以上DMV只显示当前被缓存的查询合计统计信息
--为了找出工作负荷中运行最频繁的查询,就需要执行下面的DMV查询。


SELECT TOP 10 total_worker_time ,plan_handle,execution_count,
(
SELECT SUBSTRING(text,statement_start_offset/2+1,
(
CASE WHEN statement_end_offset=-1
THEN LEN(CONVERT(NVARCHAR(max),text))*2
ELSE statement_end_offset
END -statement_start_offset)/2)
FROM sys.dm_exec_sql_text(sql_handle)
)
AS query_text
FROM sys.dm_exec_query_stats ORDER BY execution_count

--SQL Server在优化查询计划上花费的时间可以用下面的DMV查询


SELECT * FROM sys.dm_exec_query_optimizer_info WHERE counter='optimizations'
UNION
SELECT * FROM sys.dm_exec_query_optimizer_info WHERE counter='elapsed time'


SELECT TOP 10 plan_generation_num ,plan_handle,execution_count,
(
SELECT SUBSTRING(text,statement_start_offset/2+1,
(
CASE WHEN statement_end_offset=-1
THEN LEN(CONVERT(NVARCHAR(max),text))*2
ELSE statement_end_offset
END -statement_start_offset)/2)
FROM sys.dm_exec_sql_text(sql_handle)
)
AS query_text
FROM sys.dm_exec_query_stats
WHERE plan_generation_num>1
ORDER BY execution_count


 
 --检查高速缓存内存


DBCC memorystatus


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/dz45693/archive/2010/01/27/5260697.aspx

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
SQL Server 查询优化的 7 个技巧
SQL Server 查询优化的 7 个技巧
53 0
如何使用码匠连接 Microsoft SQL Server
目前码匠已经实现了与 Microsoft SQL Server 数据源的连接,能让您快速、高效地搭建应用和内部系统。
26 0
SQL Server提示:安装程序无法与下载服务器联系。请提供 Microsoft机器学习服务器安装文件的位置。。。。
今天在安装SQL Server的过程中,出现问题:安装程序无法与下载服务器联系。请提供 Microsoft机器学习服务器安装文件的位,然后单击“下一步”,可从以下位置下载安装文件。
44 0
SQL Server manager studio(SSMS)的安装教程
1、SQL Server manager studio(SSMS)安装包下载 方法一:选择从官网下载: https://learn.microsoft.com/en-us/sql/ssms/sql-server-management-studio-ssms?view=sql-server-ver16 点击free download即可下载 方法二:百度网盘下载: 如果觉得上面方法下载慢的话也可以通过我的网盘进行下载 网盘链接: https://pan.baidu.com/s/1vi9sEH
65 0
QGS
(Centos7-x86)通过ODBC连接SQL server数据库
记(Centos7-x86)通过ODBC连接SQL server数据库
49 0
QGS
(Centos7-x86)zabix5.0-0 —agent2监控 SQL server数据库(Windows)
记(Centos7-x86)zabix5.0-0 —agent2监控 SQL server数据库(Windows)
29 0
SQL SERVER 数据库导出表设计
SQL SERVER 数据库导出表设计
32 0
C#中将DataGrid上的修改同步到SQL Server数据库中
C#中将DataGrid上的修改同步到SQL Server数据库中
20 0
C#中将DataGrid绑定到SQL Server数据库,显示数据库中的数据
C#中将DataGrid绑定到SQL Server数据库,显示数据库中的数据
35 0
SQL server 2008 最小化安装(学习专用)
之后下载这两个安装包,根据电脑实际情况下载,这里我选择x64版本的两个轻量级安装包,其他版本比较大,学习的话这两个版本就够了
66 0
+关注
fanr_zh
数据库技术专家
文章
问答
文章排行榜
最热
最新
相关电子书
更多
用SQL做数据分析
立即下载
阿里云流计算 Flink SQL 核心功能解密
立即下载
Comparison of Spark SQL with Hive
立即下载