SQL Server查看存储过程的历史执行时间

在 SQL Server 中,查看存储过程的历史执行时间可以帮助识别性能瓶颈,判断是否需要进行优化。以下是几种常用的方法来查看或监控存储过程的执行时间:

1. 使用 SQL Server Profiler

SQL Server Profiler 是一个图形化工具,可以捕获并分析 SQL Server 的各种事件,包括存储过程的执行时间。

步骤:

  1. 打开 SQL Server Profiler。
  2. 创建一个新的跟踪(Trace)。
  3. 在事件选择中,选择存储过程相关的事件类别,例如:
    • RPC:Completed
    • SP:Completed
  4. 添加需要的列,例如:Duration、StartTime、EndTime。
  5. 运行跟踪,然后执行您的存储过程。
  6. 查看跟踪结果中的执行时间。

2. 使用 SQL Server Extended Events

Extended Events 是 SQL Server 中推荐使用的事件处理系统,提供了比 SQL Server Profiler 更加轻量和灵活的监控方式。

步骤:

  1. 打开 SQL Server Management Studio (SSMS)。
  2. 在对象资源管理器中,展开 “Management” -> “Extended Events”。
  3. 右键点击 “Sessions” -> “New Session Wizard”。
  4. 根据向导创建一个新的会话,选择监控存储过程执行的事件。
  5. 查看会话结果。

3. 查询系统动态管理视图 (DMVs)

SQL Server 提供了一些动态管理视图,可以用来查看存储过程的执行统计信息。

示例查询:

SELECT 
    qs.creation_time,
    qs.execution_count,
    qs.total_worker_time / qs.execution_count AS AvgCPUTime,
    qs.total_elapsed_time / qs.execution_count AS AvgElapsedTime,
    qs.total_logical_reads / qs.execution_count AS AvgLogicalReads,
    qs.total_logical_writes / qs.execution_count AS AvgLogicalWrites,
    qs.total_physical_reads / qs.execution_count AS AvgPhysicalReads,
    OBJECT_NAME(qt.objectid) AS ProcName
FROM 
    sys.dm_exec_query_stats qs
CROSS APPLY 
    sys.dm_exec_sql_text(qs.sql_handle) qt
WHERE 
    qt.dbid = DB_ID('YourDatabaseName')
    AND OBJECT_NAME(qt.objectid) = 'YourStoredProcedureName'
ORDER BY 
    qs.total_elapsed_time / qs.execution_count DESC;

4. 使用自定义日志表

如果您希望进行长期的性能监控,可以在存储过程中加入自定义日志记录,记录每次执行的开始时间和结束时间。

示例代码:

-- 创建日志表
CREATE TABLE ProcedureExecutionLog (
    ExecutionID INT IDENTITY(1,1) PRIMARY KEY,
    ProcedureName NVARCHAR(128),
    ExecutionStartTime DATETIME,
    ExecutionEndTime DATETIME,
    ExecutionDuration_ms INT
);

-- 在存储过程开始处记录开始时间
DECLARE @startTime DATETIME = GETDATE();

-- 存储过程的实际逻辑处理

-- 在存储过程结束时记录结束时间和持续时间
DECLARE @endTime DATETIME = GETDATE();
INSERT INTO ProcedureExecutionLog (ProcedureName, ExecutionStartTime, ExecutionEndTime, ExecutionDuration_ms)
VALUES ('usr.access_SP', @startTime, @endTime, DATEDIFF(MILLISECOND, @startTime, @endTime));

5. SQL Server Query Store

Query Store 是 SQL Server 中用于捕获查询性能和执行计划的信息的功能。

  1. 启用 Query Store:

    ALTER DATABASE YourDatabaseName SET QUERY_STORE = ON;
    
  2. 使用 SSMS 中的 “Query Store” 查看存储过程的执行统计信息。

通过上述方法中的一种或多种,您可以监控存储过程的执行时间,并根据这些数据判断是否需要进行优化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值