【发布时间】:2026-02-11 13:45:01
【问题描述】:
我们的 Windows 窗体应用程序通过 ADO.NET 和 SOAP Web 服务从 SQL Server 的视图中提取记录,并在数据网格中显示它们。我们有几个案例,大约 25,000 行,工作相对顺利,但潜在客户需要在一个列表中包含很多倍。
为了弄清楚我们现在的扩展程度,以及我们可以实际改进的程度(和程度),我想实现一个模拟:让 SQL Server 发送虚构的随机数据,而不是显示实际数据。客户端和传输端基本相同;视图(或至少是基础表)当然会以不同的方式工作。用户指定虚构行的数量(例如 100,000)。
目前,我只想知道客户端检索和处理数据需要多长时间,并且即将显示它。
我想弄清楚的是:如何让 SQL Server 发送此类数据?
我:
- 创建一个必须预先运行才能填充实际表的存储过程?
- 创建一个我将视图指向的函数,从而让服务器“实时”生成数据?
- 以某种方式复制和/或随机化现有数据?
在我看来,第一个选项会产生最接近真实世界的结果。因为数据实际上是“物理存在的”,所以SELECT 查询在性能方面与真实数据非常相似。但是,它会通过其他无意义的操作对服务器征税。假数据也会被备份,因为它会存在于同一个数据库中——当然,除非我在每次运行基准测试后删除数据。
第二个和第三个选项在运行实际模拟时对服务器征税,因此可能会产生不切实际的缓慢结果。
此外,我不确定如何创建这些行,除非使用循环或游标。如果foo 实际上恰好有<n> 条目,我可以使用SELECT top <n> random1(), random2(), […] FROM foo,否则我将(显然)只得到与foo 恰好有一样多的行。 GROUP BY newid() 或类似名称似乎无法解决问题。
【问题讨论】:
标签: sql-server-2005 ado.net benchmarking