【问题标题】:Disadvantages of using MARS (multiple active result sets) [duplicate]使用 MARS(多个活动结果集)的缺点 [重复]
【发布时间】:2011-09-05 12:28:21
【问题描述】:

可能重复:
Disadvantages of MARS (Multiple Active Result Sets)?

我正在开发一个应用程序,因此我必须同时使用多个 DataReader。 当我说多个数据读取器时,我的意思是多个数据读取器......同时需要几个。(大约 10-50 或更多)

所以我遇到的一种情况是使用不同的连接字符串..但是实现起来我觉得很尴尬!!!

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

从我所谓的研究中我发现,通过使用 MARS,服务器可以快速生成数据,因此客户端应用程序必须以与传入的速度相同的速度接收数据。否则数据存储缓冲区将被填满到处理停止..并且只有当缓冲区变空时才会启用..

我在附近的某个地方迷路了......

我也只使用 Select 语句来满足这个需求。

所以我的问题是使用它们有什么缺点吗? 有多少数据可以存储在服务器数据缓冲区中,这样处理就不会停止??

【问题讨论】:

  • 您的问题是什么? (以问号结尾的东西,如果这有助于你把它变成文字)
  • 你还能量化“多个数据阅读器”吗?用大写字母表示它不是数字。
  • @Johnstone => 他完全忘了用问题来结束它
  • @Tony => 我不能确切地说它可以达到 100 左右。

标签: c# .net sql sql-server sql-server-2008


【解决方案1】:

如果确实需要一次读取 100 个数据集,我建议您使用多个连接。我不明白为什么您需要在一个连接上拥有多个活动数据读取器。

但是,您尝试实现的查询或任务更有可能无需执行此大型并行操作即可完成。如果您可以更具体地提供一些细节,也许我们可以提出一些很好的替代建议。

【讨论】:

  • @Johnstone => 我在查询方面做了很多优化,现在我正在继续使用 MARS。这就像我们从一个 TableA 中获取一个列表,TableA 中的每一行都将从 TableB 中获取列表,而 TableB 中的每一行都必须从 TableC 中获取一个列表,依此类推。呸!!我知道这听起来很奇怪,但无论如何感谢您在这里的时间。我只是想知道可以存储在数据缓冲区中的数据..
  • 这听起来与连接的作用完全一样。很可能你可以用一个查询来做你想做的事情,而且它会比你正在做的事情快得多。
  • 例如:SELECT * FROM TblA INNER JOIN TblB ON X=Y 给出来自TblA 的所有行,对于TblB 中满足条件X=Y 的每一行,给出来自TblB 的行列表。跨度>
  • @KierenJohnstone:您描述 JOIN 的方式听起来就像 UNION 所做的那样。 JOIN 从多个表中获取列并创建包含来自多个表的列的新复合行(基于匹配条件)。 UNION 是从多个表中返回单个行的一种。 JOIN 的目的是从其他表中添加额外的列。 UNION 的目的是将多个结果集作为一个返回。我同意 JOIN 可能是 OP 简化流程所需要的。子查询是另一种选择。
猜你喜欢
  • 1970-01-01
  • 2020-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-25
  • 2017-11-14
相关资源
最近更新 更多