SQL性能优化:常用监控与诊断命令集锦
需积分: 15 42 浏览量
更新于2024-09-16
1
收藏 9KB TXT 举报
本文档提供了一系列SQL命令语句,涵盖了监控和分析SQL Server性能的关键方面,包括查询数据库连接数、检查等待类型、监控CPU压力、识别执行效率低下的查询以及跟踪进程和连接。
1. 查询数据库连接数:通过执行`select count(*) from Master.dbo.SysProcesses where dbid=db_id()`,可以获取当前数据库的连接数量。
2. 查看最常见的其他等待类型:`SELECT TOP 10 * from sys.dm_os_wait_stats ORDER BY wait_time_ms DESC`列出等待时间最长的前10种等待类型。`SELECT * FROM sys.dm_os_wait_stats WHERE wait_type like 'PAGELATCH%' OR wait_type like 'LAZYWRITER_SLEEP%'`则重点关注与页面锁和懒惰写等待相关的等待事件。
3. 监控CPU压力:`SELECT scheduler_id, current_tasks_count, runnable_tasks_count FROM sys.dm_os_schedulers WHERE scheduler_id < 255`帮助分析CPU调度器的当前任务和可运行任务,以了解CPU负载情况。
4. 找出执行效率最差的查询:`SELECT ... FROM sys.dm_exec_query_stats s CROSS APPLY sys.dm_exec_sql_text(s.sql_handle) t ORDER BY s.max_physical_reads DESC`展示执行次数最多、物理读取最多的前10个查询,包括其执行统计信息,如执行计数、平均执行时间和资源消耗。
5. 分析等待时间:`SELECT ... FROM sys.dm_os_wait_stats`计算总信号等待时间和资源等待时间的百分比,以确定系统中是否存在CPU或资源瓶颈。
6. 查看执行的SQL语句:通过`SELECT text, ... FROM master.sys.sysprocesses a CROSS APPLY master.sys.dm_exec_sql_text(a.sql_handle)`,可以跟踪正在执行的SQL语句,以及特定SPID(进程ID)对应的SQL语句。
7. 检测阻塞和会话信息:`WITH ... SELECT ... FROM master.sys.dm_exec_requests a CROSS APPLY master.sys.dm_exec_sql_text(a.sql_handle)`结合`dbcc inputbuffer(53)`,用于检查阻塞会话、登录信息、资源使用情况及客户端连接信息。
8. 当前进程数 和 活动进程数:`select * from master.dbo.sysprocesses` 及 `sp_who 'active'` 分别显示所有进程和当前活动的进程状态。
9. 查找未释放的连接:通过`select * from master.dbo.sysprocesses WHERE spid > 50 AND waittype = 0x0000 AND waittime = 0 AND status = 'sleeping' AND last_batch < dateadd(minute, -10, getdate()) AND login_time < dateadd(minute, -10, getdate())`查找可能引起CPU过高的长时间未释放的连接。
10. 强制结束空连接:`select 'kill ' + rtrim(spid) from master.dbo.sysprocesses WHERE spid > 50 AND waittype = 0x0000 AND waittime = 0 AND status = 'sleeping' AND last_batch < dateadd(minute, -60, getdate()) AND login_time < dateadd(minute, -60, getdate())`可终止那些长时间未活动的空闲连接。
11. 高CPU使用率的会话和SQL语句:`select spid, cmd, cpu, physical_io, memusage, ...` 显示当前CPU资源消耗最大的会话及其执行的SQL语句。
12. 缓存中的低使用率、高内存占用查询:`SELECT ... FROM sys.dm_exec_cached_plans p OUTER APPLY sys.dm_exec_sql_text(p.plan_handle) sql` 找出缓存中使用次数少但占用内存大的查询。
13. 重复计划查询分析:`SELECT top 25 qt.text,qs.plan_generation_num,qs.execution_count,dbid,objectid FROM sys.dm_exec_query_stats qs CROSS APPLY sys.dm_exec_sql_text(sql_handle) as qt WHERE plan_generation_num >1 ORDER BY qs.plan_generation_num` 查找生成多次但执行效率低的查询计划。
14. CPU时间与执行次数的分析:`SELECT ... FROM sys.dm_exec_query_stats qs CROSS APPLY sys.dm_exec_sql_text(sql_handle) qt` 用于统计SQL语句的总CPU时间、执行次数、平均CPU时间和查询数量,以识别潜在问题。
这些SQL语句对于SQL Server的性能监控和优化至关重要,可以帮助数据库管理员识别和解决性能瓶颈,提高系统效率。
2010-08-11 上传
105 浏览量
382 浏览量
2022-11-27 上传
170 浏览量
2022-11-29 上传
maomao1235
- 粉丝: 1
- 资源: 6
最新资源
- RCTF_2015_web500.rar
- react-my-app:学习react
- V4音效4.4.0.4全网最新版(附带安装方法和脉冲样本使用发放).zip
- 电脑软件简历模板大全.rar
- arsenio:ping问题的作者,被arsenio bot遗忘了
- WholesomeHaha.RevenantWww.gazrZ1D
- ctf500--app登录加密算法.rar
- kernelry.github.io:我的博客
- group-by-params:数组使用的简单分组功能,可按参数执行分组。 参数可以是对象键或嵌套路径
- 一个好用的http测试工具
- shortly-angular
- 电脑软件NDM下载器.rar实用
- JS在线汉字笔画练习特效特效代码
- appc-github-client:用于监控Github组织,存储库等的仪表板!
- getopts:解析CLI参数
- 盘古:这是一个演示说明