【问题标题】:How does Multiple Active Result Set (MARS) work in SQL Server?多活动结果集 (MARS) 如何在 SQL Server 中工作?
【发布时间】:2022-04-25 13:55:02
【问题描述】:

只是想知道是否有人可以解释多活动结果集 (MARS) 在 SQL Server 中的工作原理,因为它在 MSDN 站点上不是很清楚。

(A) 在 MARS 连接上,查询是异步执行还是请求异步执行但仍按顺序执行?

(B) 10个线程并发调用1个stored proc在以下场景有什么区别:

  1. 为所有线程使用 1 个 MARS 连接(隐式创建 10 个会话)
  2. 使用 10 个连接(每个线程 1 个)?

(C) 如果使用 MARS 连接,您如何查看每个会话正在执行的 SQL?

【问题讨论】:

    标签: c# sql sql-server


    【解决方案1】:

    This answers all your questions.

    A.查询并行执行,就好像多个客户端已连接并执行它们一样,只有现在您可以从单个连接中执行此操作。显然其处理的实际方式是“复杂的”,但就客户而言,它们同时运行。

    B. 1 个连接或 10 个连接之间的区别在于共享服务器资源。例如,您只需要一个安全上下文。

    C.使用 SQLServer Profiler。

    【讨论】:

      【解决方案2】:

      只是想澄清一下已接受答案的第一点,来自同一个resourse

      您需要了解的第三件事是,多个活动请求实际上并不是并行运行的,它们是以交错方式运行的。从客户端应用程序的角度来看,服务器支持并行运行多个请求,客户端可以随意从多个请求中提取结果。但是在服务器端,向服务器发送的多个请求中,只有一个请求可以在给定时间实际进行,其他请求必须等待该请求放弃其连接资源。

      【讨论】:

      猜你喜欢
      • 2020-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-21
      • 2018-01-06
      • 1970-01-01
      • 2023-04-05
      相关资源
      最近更新 更多