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

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

显然至less有两个已知的(潜在的)缺陷(从(1) 团队博客 ):

  1. 显然,这可能会导致任何遗留系统的潜在问题,而这些遗留系统不是针对MARS的devise而运行的 – “在非MARS世界运行时优化的现有代码在未运行MARS的情况下可能会出现轻微的性能下降”

  2. “使用MARS,您可以将多个多语句批次发送到服务器。 服务器会交错执行这些批处理,这意味着如果批处理通过SET或USE语句改变服务器状态,或者使用TSQL事务pipe理语句(BEGIN TRAN,COMMIT,ROLLBACK),你和服务器都可能会感到困惑关于你的实际意图是什么。“

我还没有尝试一个启用MARS的devise,但是我现在正在接近我目前的项目。 我们在竞争(有时是从属)查询操作(例如延迟从活动logging集执行的相同数据库中加载configuration数据)方面存在一个小问题。

这里有更多的MSDN网站(2)的信息

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

  • 一次只做一个连接需要稍多的服务器资源。
  • 您必须运行SQL Server 2005或更高版本。 所以这可能是传统(ack!)环境中的一个问题。

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

他们不支持事务保存点。 但我不认为这是一个劣势。

Interesting Posts