如何检查SQL Server CPU瓶颈

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
简介: --检测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语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS&nbsp;SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
2月前
|
SQL 监控 关系型数据库
MySQL数据库中如何检查一条SQL语句是否被回滚
检查MySQL中的SQL语句是否被回滚需要综合使用日志分析、事务状态监控和事务控制语句。理解和应用这些工具和命令,可以有效地管理和验证数据库事务的执行情况,确保数据的一致性和系统的稳定性。此外,熟悉事务的ACID属性和正确设置事务隔离级别对于预防数据问题和解决事务冲突同样重要。
80 2
|
2月前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
4月前
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
115 13
|
4月前
|
SQL
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。
|
4月前
|
SQL 存储 网络安全
关系数据库SQLserver 安装 SQL Server
【7月更文挑战第26天】
61 6
|
3月前
|
缓存 Ubuntu Linux
在Linux中,如何检查系统的CPU和内存使用情况?
在Linux中,如何检查系统的CPU和内存使用情况?
|
4月前
|
存储 SQL C++
对比 SQL Server中的VARCHAR(max) 与VARCHAR(n) 数据类型
【7月更文挑战7天】SQL Server 中的 VARCHAR(max) vs VARCHAR(n): - VARCHAR(n) 存储最多 n 个字符(1-8000),适合短文本。 - VARCHAR(max) 可存储约 21 亿个字符,适合大量文本。 - VARCHAR(n) 在处理小数据时性能更好,空间固定。 - VARCHAR(max) 对于大文本更合适,但可能影响性能。 - 选择取决于数据长度预期和业务需求。
382 1
|
3月前
|
SQL 安全 Java
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client
480 0
|
4月前
|
SQL Oracle 关系型数据库
MySQL、SQL Server和Oracle数据库安装部署教程
数据库的安装部署教程因不同的数据库管理系统(DBMS)而异,以下将以MySQL、SQL Server和Oracle为例,分别概述其安装部署的基本步骤。请注意,由于软件版本和操作系统的不同,具体步骤可能会有所变化。
309 3
|
3月前
|
SQL 缓存 关系型数据库
[mysql]状态检查常用SQL
[mysql]状态检查常用SQL
179 0