C#SqlConnection
支持多少个并发语句?
假设我正在运行10个线程的Windows服务。所有线程都使用相同的SqlConnection
对象,但使用不同的SqlCommand
对象,并对不同的表或相同的表但具有不同的数据执行选择,插入,更新和删除之类的操作。能行吗一个SqlConnection
对象是否可以处理10个并发语句?
C#SqlConnection支持多少个并发语句?
从技术上讲,您可以有多个“运行中”语句,但只有一个语句正在执行。
单个SqlConnection映射到SQL Server中的单个Connection和Session。在Sql Server中,会话一次只能运行一个活动的会话。如果启用MultipeActiveResultsets但语句是交错的,则切勿并行运行。
MARS启用interleaved在一个请求中执行多个请求单连接。也就是说,它允许批处理在其内部运行执行,它允许其他请求执行。但是请注意,MARS是根据交错而不是并行定义的执行。
和
只能在明确定义的点切换执行。
因此,您不能保证每当一条语句被阻塞时,另一条语句就会运行。因此,如果要并行运行语句,则需要使用多个SqlConnections。
还请注意,单个查询可能使用并行执行计划。