MARS(多个活动结果集)的缺点?


83

有人知道MARS(多个活动结果集)有什么缺点吗?有谁知道为什么应该避免使用MARS的任何原因,例如游标比MARS更有用的情况。

Answers:


61

显然,至少存在两个已知的(潜在的)缺陷(来自(1)团队博客):

  1. 显然,这对于未设计为与支持MARS的设计运行的任何传统系统都可能引起潜在的问题- “经过优化以在非MARS领域中运行的现有代码,在未经过MARS修改的情况下运行时,可能会出现轻微的性能下降”。

  2. “借助MARS,您可以将多个多语句批处理发送到服务器。服务器将交错执行此类批处理,这意味着,例如,如果批处理通过SET或USE语句更改服务器状态,或使用TSQL事务管理语句(BEGIN TRAN,COMMIT,ROLLBACK),则您和服务器都可能会感到困惑关于您的实际意图。”

我还没有尝试过启用MARS的设计,但是在我当前的项目中,我已经非常接近这样做了。我们在竞争性查询(有时是依赖项)的查询操作中存在一个小问题(例如,从活动记录集正在执行的同一数据库中延迟加载配置数据)。

有关MSDN站点(2)的更多信息,请点击此处。

[(1) http://blogs.msdn.com/sqlnativeclient/archive/2006/09/27/774290.aspx ]
[(2)http://msdn.microsoft.com/en-us/library/ms131686.aspx ]


3
在应用@RobS出色的解决方案之前,我将首先阅读本文,以确保您无法使用以下解决方案解决此问题:devproconnections.com/development/…或在数据库调用的末尾添加.ToList()解决了我的问题。顺便说一句,感谢RobS的宝贵建议,MARS将来会派上用场。:)
Termato 2014年

6
  • 比一次进行一个连接需要更多的服务器资源。
  • 您必须运行SQL Server 2005或更高版本。因此在遗留(ack!)环境中可能是个问题。

您可以使用SqlTransaction很好。
Mladen Prajdic

17
“稍微多一点的服务器资源”是多少?您可以根据内存或CPU估算一下吗?我对此感兴趣,主要是因为我在一个Azure环境中,资源与服务器成本成正比。
Mathias Lykkegaard Lorenzen 2014年

1
@MathiasLykkegaardLorenzen您是否找到问题的答案?
Sinjai '18

4

取决于什么?没有真正的缺点。

他们不支持事务保存点。但我不认为这是不利的。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.