多个用户同时请求 30,000 行信息

本文关键字:信息 请求 用户 | 更新日期: 2023-09-27 17:55:29

我有一个可供 3 个用户使用的测试平台应用程序。

如果所有用户同时运行应用,则运行存储过程,并且所有三个都将具有结果集,当前使用大约 30,000 条记录的ADO.NET Datatable,然后应用需要将其移动到每个记录的 Excel 模板中。

该模板是一个xlsm文件,其中包含一些在导入数据后需要运行的VBA。此模板保存在解决方案中。

我将尝试使用Excel-Interop将数据从DataTable移动到worksheet

有没有人有将这么多数据从数据表移动到Excel的经验?

@slugster建议"从 Excel 设置数据源并使用脏读运行查询"......是否可以在链接到非具体化数据表Excel中设置数据源?

通过 xl interop 遍历 30000 行乘 10 列的表会遇到问题吗?

多个用户同时请求 30,000 行信息

有没有人从数据表中移动这么多数据的经验 进入Excel?

不是来自 DataTable 对象,而是使用 Excel 内置的导入数据能力的数据量,是的。

@slugster建议"从Excel设置数据源并运行 使用脏读的查询"...是否可以设置一个 Excel 中的数据源链接到非具体化数据表?

我也会建议这样做。为了更进一步,我建议创建一个存储过程,然后调用它。使用存储过程应该会看到更好的性能。该过程可以收集和准备数据,然后将其返回到Excel。此外,您还可以在过程中构建缓存机制。例如,如果您的数据每天仅更改,则您每天只会在源表中重新生成一次数据,因此只有第一个请求数据的用户才会受到初始性能影响。此外,根据您在 VBA 中的 Excel 中执行的后处理类型,也许也可以在过程中处理。如果将"设置事务隔离级别读取未提交"添加到过程的顶部,或者在愿意允许脏读取的表上使用 (NOLOCK) 提示,则该过程还有助于减少锁定问题的可能性。

下面是一篇关于在 Excel 中使用存储过程的好文章:http://codebyjoshua.blogspot.com/2012/01/get-data-from-sql-server-stored.html

将通过 xl 循环访问 30000 行 x 10 列的表 互操作遇到问题?

这取决于你对"问题"的定义。我可以看到可能的性能影响,但是如果您在存储过程中尽可能多地处理,您应该没问题。在数据的世界里,这真的很小。