SQLSERVER耗时最长的SQL

对于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                                   任意一次完成此存储过程的执行所用的最长时间(微秒)。



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

SELECT TOP 10

        a.object_id ,

        a.database_id ,

        DB_NAME(ISNULL(a.database_id,''))'DatabaseName',

        OBJECT_NAME(object_id, database_id)'proc name' ,

        a.cached_time ,

        a.last_execution_time ,

        a.total_elapsed_time ,

        a.total_elapsed_time /a.execution_count AS [avg_elapsed_time] ,

        a.execution_count ,

        a.total_physical_reads /a.execution_count avg_physical_reads ,

        a.total_logical_writes ,

        a.total_logical_writes /a.execution_count avg_logical_reads ,

        a.last_elapsed_time ,

        a.total_elapsed_time / a.execution_countavg_elapsed_time ,

        b.text ,

        c.query_plan

FROM    sys.dm_exec_procedure_stats AS a

        CROSS APPLYsys.dm_exec_sql_text(a.sql_handle) b

        CROSS APPLYsys.dm_exec_query_plan(a.plan_handle) c

ORDERBY [total_worker_time] DESC ;

你可能感兴趣的:(SQL Server)