SQL性能优化:常用监控与诊断命令集锦
需积分: 15 29 浏览量
更新于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的性能监控和优化至关重要,可以帮助数据库管理员识别和解决性能瓶颈,提高系统效率。
2016-09-23 上传
2011-05-29 上传
2011-11-03 上传
2022-11-27 上传
2022-11-29 上传
2010-08-13 上传
2014-06-22 上传
maomao1235
- 粉丝: 1
- 资源: 6
最新资源
- 构建基于Django和Stripe的SaaS应用教程
- Symfony2框架打造的RESTful问答系统icare-server
- 蓝桥杯Python试题解析与答案题库
- Go语言实现NWA到WAV文件格式转换工具
- 基于Django的医患管理系统应用
- Jenkins工作流插件开发指南:支持Workflow Python模块
- Java红酒网站项目源码解析与系统开源介绍
- Underworld Exporter资产定义文件详解
- Java版Crash Bandicoot资源库:逆向工程与源码分享
- Spring Boot Starter 自动IP计数功能实现指南
- 我的世界牛顿物理学模组深入解析
- STM32单片机工程创建详解与模板应用
- GDG堪萨斯城代码实验室:离子与火力基地示例应用
- Android Capstone项目:实现Potlatch服务器与OAuth2.0认证
- Cbit类:简化计算封装与异步任务处理
- Java8兼容的FullContact API Java客户端库介绍