EF Core:命令超时到底是根据什么来测量的?

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

我之前下载了数百万条记录,没有遇到任何超时。但是,在添加 WHERE 子句将下载限制为仅几千条记录后,我经常面临超时。这让我有些困惑,并质疑我对如何应用超时的理解。

如果 30 秒后 SQL Server 仍在传输数据,是否会发生超时?

这种行为差异肯定是由于当前执行计划表现不佳造成的,还是有其他解释?我这样问是因为如果没有 WHERE 子句,数据会立即开始流式传输,但使用 WHERE 子句显然不会发生这种情况。

entity-framework entity-framework-core
1个回答
0
投票

如果 30 秒后 SQL Server 仍在传输数据,是否会发生超时?

对于 SQL Server

此属性是命令执行或结果处理期间所有网络读取的累积超时(对于方法调用期间读取的所有网络数据包)。返回第一行后仍然可能发生超时,并且不包括用户处理时间,仅包括网络读取时间。

SqlCommand.CommandTimeout

因此 CommandTimeout 仅在等待服务器结果时运行。 如果服务器连续传输结果,则 CommandTimeout 在 30 秒后不会触发。

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