如何进行“响应测试”存储过程?

时间:2011-12-15 08:07:23

标签: c# asp.net sql-server stored-procedures

在我的网络应用程序中,我想做一个“响应测试”过程。可以从网页启动此过程以查看数据库服务器是否可访问以及获取某些结果的近似时间。

我不想要准确执行存储过程的时间,我想知道数据库的“反应性”..

所以我做了一个像这样的方法:

        var start = DateTime.Now;
        var test = new ObjectManager().ListObjects(SomeParameters);            
        var stop = DateTime.Now;
        TimeSpan diff = stop - start;
        label.Text = diff.TotalSeconds.ToString();

事实上,ObjectManager.listObject()是一种通过存储过程从数据库中获取数据的方法。 因此,计算所有过程的时间。 联系数据库,启动存储过程,转换和检索数据,.. 不仅适用于存储过程。这不是问题。

这很好,但我有两个问题。

  1. 我需要将存储过程从数量上“独立” DATAS。

  2. 我注意到在第一次执行时返回的时间是 例如1,62123秒。如果我刷新页面的时间是 0,89897秒..半场!之后,每次刷新大约为0.8 秒..

  3. 它似乎是由sql缓存引起的。

    因此,我需要一个存储过程“独立”来自数据库中的大量数据,并且不使用sql缓存。任何想法都可以这样做吗?

1 个答案:

答案 0 :(得分:1)

您可以创建一个包含一些返回静态值的SQL代码的过程。像SELECT 1;或SELECT getdate()

这样就可以检查与数据库的连接,而无需点击任何数据。

第一次运行该过程时,SQL服务器需要为其制定计划,这将导致一些开销。

当然,您可以连续多次(从代码中)运行该过程并计算平均值。