【问题标题】:SQL measure stored procedure execution timeSQL测量存储过程执行时间
【发布时间】:2013-12-20 09:55:28
【问题描述】:

我想测量在 SQL Server 中执行存储过程所需的时间。但是除了测量整个存储过程的执行之外,我还想测量存储过程中每个操作所花费的时间,这样我就可以找到瓶颈。

在 C# 中,为了在测试代码执行时间时完成这样的事情,我会在执行开始之前保存日期,当执行结束时,我会通过从当前时间减去开始时间(在执行后)打印给我的 TimeSpan 对象)。

我想知道如何在存储过程中使用 SQL Server 实现这样的事情,我可以打印我在存储过程中的操作之间测量的时间跨度。

谢谢

【问题讨论】:

    标签: sql sql-server stored-procedures


    【解决方案1】:
    SET STATISTICS TIME ON;
    SET STATISTICS IO ON;
    GO
    
    EXECUTE <yourSP>;
    
    GO
    

    【讨论】:

    • 您好,感谢您的回答。这是否也测量插入和更新的执行?是否建议在开发中用于生产?
    • 它可以测量一切,并且可以安全地用于生产使用 - 用于故障排除
    • 执行完上面的存储过程所需要的时间会在哪里显示?
    【解决方案2】:

    您需要actual execution plan。您可以通过在 SQL Management Studio 中按下右键运行 SQL 查询来查看这些内容(它们将在结果窗口中显示为选项卡)。这将向您显示存储过程的哪些部分正在运行以及每个位占用的时间 - 正是您想要调整的内容。

    【讨论】:

      【解决方案3】:

      对我有用的是这里发布的建议: https://www.codeproject.com/tips/1151457/a-simple-method-to-measure-execution-time-in-sql-s

      Declare @StartTime DateTime2
      
      SET @StartTime = SysUTCDateTime()
      
      -- SQL Execution
      
      Print 'Time taken was ' + cast(DateDiff(millisecond, @StartTime, SysUTCDateTime()) as varchar) + 'ms'
      
      SET @StartTime = SysUTCDateTime()
      
      -- Second SQL Execution
      
      Print 'Time taken was ' + cast(DateDiff(millisecond, @StartTime, SysUTCDateTime()) as varchar) + 'ms'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-10-15
        • 2011-01-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多