使用MARS(多活动结果集)的缺点

12

可能重复内容:
MARS(多个活动结果集)的缺点?

我正在开发一个应用程序,需要同时使用多个DataReaders。通过“多个DataReaders”我指的是真正需要同时使用(大约10-50个或更多)。

我遇到的一种情况是使用不同的连接字符串。但是我觉得这种实现方式很奇怪!!!

另一种方法是使用MARS,我发现它相当不错。但我的疑问是,当我实施它时,是否需要考虑或采取任何预防措施,或者是否有什么恶意等待着我呢 :-)

从我的所谓研究中,我能够找到的是,通过使用MARS,服务器会快速生成数据,因此客户端应用程序必须以相同的速度接收数据。否则,数据存储缓冲区将被填满,导致处理停止,并且仅在缓冲区变空时才会启用...

我在这里有些迷失了。。。

此外,我仅为此需求使用Select语句。

所以我的问题是,它们有什么缺点吗?服务器数据缓冲区可以存储多少数据而不会导致处理停止?


1
你有什么问题?(如果这能帮助你表达出来) - Kieren Johnstone
你能否量化“MULTIPLE DATAREADERS”?将其大写并不会使它成为一个数字。 - Tony
@Johnstone => 他完全忘记以问号结尾了。 - Manek
@Tony => 数字我说不准确,可能会在100左右或者其他数值。 - Manek
1个回答

1

如果真的需要同时从100个数据集中读取,我建议您使用多个连接。我无法理解为什么您需要在单个连接上有多个活动的数据读取器。

然而,更有可能的是,您尝试实现的查询或任务可以在不需要进行大规模并行操作的情况下完成。如果您能提供一些详细信息,也许我们可以想出一些好的替代建议。


@Johnstone => 我尝试了很多优化查询的方法,现在我正在使用MARS继续前进。这有点像我们从TableA中获取一个列表,TableA中的每一行将从TableB中获取列表,TableB中的每一行将不得不从TableC中获取列表,依此类推。哎呀!我知道这听起来很奇怪,但无论如何感谢你在这里花费的时间。我只想知道可以存储在数据缓冲区中的数据。 - Manek
1
这听起来很像一个联接操作。很可能你可以用单个查询完成你想要做的事情,并且速度会比你现在所做的要快得多。 - Kieren Johnstone
例如:SELECT * FROM TblA INNER JOIN TblB ON X=Y 会返回 TblA 中的所有行,并且对于 TblB 中每一行满足条件 X=Y 的情况下,还会返回一个由 TblB 行组成的列表。 - Kieren Johnstone
@KierenJohnstone:你描述JOIN的方式听起来像UNION所做的事情。JOIN从多个表中获取列,并创建包含多个表的列的新组合行(基于匹配条件)。UNION是从多个表返回单个行的那个。JOIN的目的是从其他表中添加额外的列。UNION的目的是将多个结果集作为一个返回。我同意JOIN可能是OP需要简化过程的方法。子查询是另一种选择。 - Michael

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接