存储过程性能指标

pra*_*nth 4 performance sql-server-2008 sql-server stored-procedures

我正在接手一个新项目,它有大约 2500 个 SP!并想知道在当前状态下每个存储过程所花费的最大/最小时间是多少。还有 IO,每个 SP 使用的逻辑读取。想以这种方式对其进行基准测试。每次新下降后都会使用此基准来比较所做的更改是否有帮助。

DMV 或扩展活动在这里有帮助吗?或者我是否需要运行覆盖我完整工作负载的跟踪来捕获它?

Aar*_*and 10

这将使您获得自上次服务重启以来平均持续时间最长的前 100 名。当 SQL Server 重新启动时,此 DMV 会重置,因此如果您需要超出此范围,则需要跟踪、使用扩展事件、使用某种审计(内置或手动),或投资购买 3rd 方监控工具.

您可以明显地调整它,或者遵循不同的指标,例如物理或逻辑读取......

USE [Your Database Name];
GO

SELECT TOP (100)
    OBJECT_SCHEMA_NAME([object_id]),
    OBJECT_NAME([object_id]),
    type_desc,
    cached_time,
    last_execution_time,
    execution_count,
    total_worker_time,
    last_worker_time,
    min_worker_time,
    max_worker_time,
    total_physical_reads,
    last_physical_reads,
    min_physical_reads,
    max_physical_reads,
    total_logical_writes,
    last_logical_writes,
    min_logical_writes,
    max_logical_writes,
    total_logical_reads,
    last_logical_reads,
    min_logical_reads,
    max_logical_reads,
    total_elapsed_time,
    last_elapsed_time,
    min_elapsed_time,
    max_elapsed_time
FROM sys.dm_exec_procedure_stats
WHERE DB_NAME(database_id) = N'Your Database Name'
ORDER BY total_elapsed_time / execution_count DESC;
Run Code Online (Sandbox Code Playgroud)