DBA必备脚本--执行中的SQL
来源:互联网 发布:蜂鸟网络如何收费 编辑:程序博客网 时间:2024/06/06 06:44
前言
当数据库出现性能问题时,这个脚本能够直观的看到数据库中SQL 的运行状态,快速找到执行缓慢的语句。这是我使用最频繁的脚本之一.
SELECT es.session_id, database_name=DB_NAME(er.database_id), er.cpu_time, er.reads, er.writes, er.logical_reads, login_name, er.status, blocking_session_id, wait_type, wait_resource, wait_time, individual_query=SUBSTRING(qt.text,(er.statement_start_offset/2)+1,((CASE WHEN er.statement_end_offset=-1 THEN LEN(CONVERT(NVARCHAR(MAX),qt.text))* 2 ELSE er.statement_end_offset END-er.statement_start_offset)/2)+1), parent_query=qt.text, program_name, host_name, nt_domain, start_time, DATEDIFF(MS,er.start_time,GETDATE())as duration, (SELECT query_plan FROM sys.dm_exec_query_plan (er.plan_handle))AS query_planFROM sys.dm_exec_requests er INNER JOIN sys.dm_exec_sessions es ON er.session_id=es.session_id CROSS APPLY sys.dm_exec_sql_text (er.sql_handle)AS qtWHERE es.session_id> 50 AND es.session_Id NOT IN(@@SPID)ORDER BY 1, 2
查询结果截图如下:在
重要信息
logical_reads:逻辑读,衡量语句的执行开销。如果大于10w,说明此语句开销很大。可以检查下索引是否合理
status:进程的状态。running 表示正在运行,sleeping 表示处于睡眠中,未运行任何语句,suspend 表示等待,runnable 等待cpu 调度
blocking_session_id: 如果不为0,例如 60 。表示52号进程正在被60阻塞。50 进程必须等待60执行完成,才能执行下面的语句
host_name :发出请求的服务器名
program_name:发出请求的应用程序名
duration: 请求的执行时间
总结
用了都说好。
阅读全文
2 1
- DBA必备脚本--执行中的SQL
- oracle dba 日常必备sql
- DBA必备脚本--数据库文件和日志文件大小
- DBA必备脚本--记录数据库的DDL
- DBA必备脚本--检查失败的作业
- qtp执行文本中的sql语句/脚本
- qtp执行文本中的sql语句/脚本
- Oracle-常用监控SQL语句,DBA必备
- 用plsql中的command window批量执行sql脚本
- DBA必备的SQL好习惯 带来一笔大财富
- SQL Server DBA十大必备工具使生活轻松
- 批量执行SQL脚本
- 如何执行SQL脚本
- MYSQL执行sql脚本
- servlet执行sql脚本
- sqlcmd 执行sql脚本
- Java 执行sql脚本
- 执行sql脚本文
- PB笔记--语法
- 从移动端click到摇一摇
- Java设计模式七大原则
- linux下实时查看tomcat运行日志
- 【TFS权限管理】vs2013 修改TFS已经登录的用户方法
- DBA必备脚本--执行中的SQL
- ORA-00020 超过当前最大连接数
- day01
- Codefoces Round #425 Div.2小结
- Vue案例
- ActiveMQ的初步使用
- Lua
- JS里面的关键字
- VS2010操作Excel编程