SqlConnection支持多少个并发语句

问题描述 投票:0回答:1

C#SqlConnection支持多少个并发语句?

假设我正在运行10个线程的Windows服务。所有线程都使用相同的SqlConnection对象,但使用不同的SqlCommand对象,并对不同的表或相同的表但具有不同的数据执行选择,插入,更新和删除之类的操作。能行吗一个SqlConnection对象是否可以处理10个并发语句?

c# sql-server multithreading sqlconnection sqlcommand
1个回答
0
投票

C#SqlConnection支持多少个并发语句?

从技术上讲,您可以有多个“运行中”语句,但只有一个语句正在执行。

单个SqlConnection映射到SQL Server中的单个Connection和Session。在Sql Server中,会话一次只能运行一个活动的会话。如果启用MultipeActiveResultsets但语句是交错的,则切勿并行运行。

MARS启用interleaved在一个请求中执行多个请求单连接。也就是说,它允许批处理在其内部运行执行,它允许其他请求执行。但是请注意,MARS是根据交错而不是并行定义的执行。

只能在明确定义的点切换执行。

因此,您不能保证每当一条语句被阻塞时,另一条语句就会运行。因此,如果要并行运行语句,则需要使用多个SqlConnections。

还请注意,单个查询可能使用并行执行计划。

https://docs.microsoft.com/en-us/sql/relational-databases/native-client/features/using-multiple-active-result-sets-mars?view=sql-server-ver15

© www.soinside.com 2019 - 2024. All rights reserved.