原文:DBA工具——DMV——通过sys.dm_exec_procedure_stats查看存储过程执行信息

对于DBA来说,经常要手机存储过程的某些信息:

  1. 执行了多少次
  2. 执行的执行计划如何
  3. 执行的平均读写如何
  4. 执行平均需要多少时间
列名 数据类型 说明

database_id

int

存储过程所在的数据库 ID。

object_id

int

存储过程的对象标识号。

type

char(2)

对象的类型:

P = SQL 存储过程

PC = 程序集 (CLR) 存储过程

X = 扩展存储过程

type_desc

nvarchar(60)

对对象类型的说明:

SQL_STORED_PROCEDURE

CLR_STORED_PROCEDURE

EXTENDED_STORED_PROCEDURE

sql_handle

varbinary(64)

可用于与 sys.dm_exec_query_stats 中从此存储过程中执行的查询关联。

plan_handle

varbinary(64)

内存中计划的标识符。该标识符是瞬态的,仅当计划保留在缓存中时,它才保持不变。该值可以与 sys.dm_exec_cached_plans 动态管理视图一起使用。

cached_time

datetime

存储过程添加到缓存的时间。

cached_time

datetime

存储过程添加到缓存的时间。

last_execution_time

datetime

上次执行存储过程的时间。

execution_count

bigint

存储过程自上次编译以来所执行的次数。

total_worker_time

bigint

此存储过程自编译以来执行所用的 CPU 时间总量(微秒)。

last_worker_time

bigint

上次执行存储过程所用的 CPU 时间(微秒)。

min_worker_time

bigint

此存储过程在单次执行期间曾占用的最大 CPU 时间(微秒)。

max_worker_time

bigint

此存储过程在单次执行期间曾占用的最大 CPU 时间(微秒)。

total_physical_reads

bigint

此存储过程自编译后在执行期间所执行的物理读取总次数。

last_physical_reads

bigint

上次执行存储过程时所执行的物理读取次数。

min_physical_reads

bigint

该存储过程在单次执行期间所执行的最少物理读取次数。

max_physical_reads

bigint

该存储过程在单次执行期间所执行的最大物理读取次数。

total_logical_writes

bigint

此存储过程自编译后在执行期间所执行的逻辑写入总次数。

last_logical_writes

bigint

上次执行存储过程时所执行的逻辑写入次数。

min_logical_writes

bigint

该存储过程在单次执行期间所执行的最少逻辑写入次数。

max_logical_writes

bigint

该存储过程在单次执行期间所执行的最大逻辑写入次数。

total_logical_reads

bigint

此存储过程自编译后在执行期间所执行的逻辑读取总次数。

last_logical_reads

bigint

上次执行存储过程时所执行的逻辑读取次数。

min_logical_reads

bigint

该存储过程在单次执行期间所执行的最少逻辑读取次数。

max_logical_reads

bigint

该存储过程在单次执行期间所执行的最大逻辑读取次数。

total_elapsed_time

bigint

完成此存储过程的执行所用的总时间(微秒)。

last_elapsed_time

bigint

最近完成此存储过程的执行所用的时间(微秒)。

min_elapsed_time

bigint

任意一次完成此存储过程的执行所用的最短时间(微秒)。

max_elapsed_time

bigint

任意一次完成此存储过程的执行所用的最长时间(微秒)。

下面语句返回前十句耗费时间最长的存储过程信息:

  1. SELECT TOP 10
  2. a.object_id ,
  3. a.database_id ,
  4. DB_NAME(ISNULL(a.database_id,'')) 'DatabaseName',
  5. OBJECT_NAME(object_id, database_id) 'proc name' ,
  6. a.cached_time ,
  7. a.last_execution_time ,
  8. a.total_elapsed_time ,
  9. a.total_elapsed_time / a.execution_count AS [avg_elapsed_time] ,
  10. a.execution_count ,
  11. a.total_physical_reads / a.execution_count avg_physical_reads ,
  12. a.total_logical_writes ,
  13. a.total_logical_writes / a.execution_count avg_logical_reads ,
  14. a.last_elapsed_time ,
  15. a.total_elapsed_time / a.execution_count avg_elapsed_time ,
  16. b.text ,
  17. c.query_plan
  18. FROM sys.dm_exec_procedure_stats AS a
  19. CROSS APPLY sys.dm_exec_sql_text(a.sql_handle) b
  20. CROSS APPLY sys.dm_exec_query_plan(a.plan_handle) c
  21. ORDER BY [total_worker_time] DESC ;
  22.  
  23. GO

DBA工具——DMV——通过sys.dm_exec_procedure_stats查看存储过程执行信息的更多相关文章

  1. SQL server 2008里面通过sys.dm_exec_procedure_stats得到存储过程的执行信息--转

    --转自:http://blogs.msdn.com/b/apgcdsd/archive/2011/05/13/sql-server-2008-sys-dm-exec-procedure-stats. ...

  2. DBA工具——DMV——如何知道TSQL语句已运行了多久

    原文:DBA工具--DMV--如何知道TSQL语句已运行了多久 DBA通常想知道正在运行的语句已经执行了多久了?可以使用Sqlserver profiler来捕获语句的开始时间,和现有时间比较,但是在 ...

  3. SQL Server 查看存储过程执行次数的方法

    今天老大提出一个需求,想查看数据库存储过程执行的次数,以前没有接触过,于是网上找了下,发现还真有! 不废话,贴出来sql语句,直接执行即可看到结果: use master select text,ex ...

  4. SQL Server如何查看存储过程的执行计划

    有时候,我们需要查看存储过程的执行计划,那么我们有什么方式获取存储过程的历史执行计划或当前的执行计划呢? 下面总结一下获取存储过程的执行计划的方法. 1:我们可以通过下面脚本查看存储过程的执行计划,但 ...

  5. 使用sys.dm_exec_cached_plans监控存储过程性能

    讨论了如何使用sys.dm_exec_query_stats动态管理视图(dmv ).本文将以SQL Server 2005为例,讨论如何利用dmv信息来判断tsql的性能优劣.在这篇文章中将继续我有 ...

  6. Sql Server 查看存储过程最后修改时间

    Sql Server 查看存储过程最后修改时间 select * from sys.procedures order by modify_date desc

  7. Map工具系列-08-map控件查看器

    所有cs端工具集成了一个工具面板 -打开(IE) Map工具系列-01-Map代码生成工具说明 Map工具系列-02-数据迁移工具使用说明 Map工具系列-03-代码生成BySQl工具使用说明 Map ...

  8. mysql查看存储过程

    查询数据库中的存储过程 方法一: select `name` from mysql.proc where db = 'your_db_name' and `type` = 'PROCEDURE' 方法 ...

  9. SQL存储过程相关信息查看转

    原文地址:http://www.cnblogs.com/minideas/archive/2009/10/29/1591891.html   --1.查看所有存储过程与函数      exec sp_ ...

随机推荐

  1. Unable to start MySQL service. Another MySQL daemon is already running with the same UNIX socket

    Unable to start MySQL service. Another MySQL daemon is already running with the same UNIX socket 特征 ...

  2. Sql还原数据库出现3154错误

    要先知道还原的数据库的名字 然后在数据库中新建一个那个名字的数据库, his 是数据库的名字!! RESTORE DATABASE his FROM DISK = 'E:\RDHL文件\HIS相关文档 ...

  3. ORACLE 中的 锁 介绍

    ORACLE 中的 锁 介绍 Oracle数据库支持多个用户同时与数据库进行交互,每个用户都可以同时运行自己的事务,从而也需要对并发访问进行控制.Oracle也是用“锁”的机制来防止各个事务之间的相互 ...

  4. Ubuntu下超实用的命令

    1. Ubuntu中查看已安装软件包的方法 sudodpkg -l 2. ubuntu系统如何查看软件安装的位置 dpkg-L软件名 实例: wwx@ubuntu:~$dpkg -L mysql-se ...

  5. jdk和jre是什么?都有什么用?

    大家肯定在安装JDK的时候会有选择是否安装单独的jre,一般都会一起安装,我也建议大家这样做.由于这样更能帮助大家弄清楚它们的差别: Jre   是java   runtime   environme ...

  6. win8.1 64位环境建设android开发环境

    1.下载JDK,http://www.oracle.com/technetwork/java/javase/downloads/index.html,选择版本号 2.安装刚刚下载的JDK 3.环境变量 ...

  7. 部署Win Server 2012十项注意

    博文来自 http://server.zol.com.cn/351/3511746.html Windows Server 2012是微软公司在2012年推出的面向中小企业应用一款全新的服务器操作系统 ...

  8. Linux下PS命令详解 (转)

    要对系统中进程进行监测控制,查看状态,内存,CPU的使用情况,使用命令:/bin/ps (1)ps :是显示瞬间进程的状态,并不动态连续: (2)top:如果想对进程运行时间监控,应该用 top 命令 ...

  9. 设单链表中存放n个字符,试设计一个算法,使用栈推断该字符串是否中心对称

    转载请注明出处:http://blog.csdn.net/u012860063 问题:设单链表中存放n个字符.试设计一个算法,使用栈推断该字符串是否中心对称,如xyzzyx即为中心对称字符串. 代码例 ...

  10. iOS缓存类的设计

    使用执行速度缓存的程序可以大大提高程序,设计一个简单的缓存类并不需要太复杂的逻辑. 只需要一个简单的3接口. 存款对象 以一个对象 删除对象 阅读对象 watermark/2/text/aHR0cDo ...