我使用实体框架(EF6(随机获取执行超时错误。在执行以下更新命令时,它给出了随机执行超时错误。
update [dbo]。[雇用]设置[name] =@0,[joiningdate] =@1 ([empid] =@2(
上面的更新命令很简单,需要2-5秒才能更新可用的eoplable。但是有时相同的更新查询需要40-50秒,并导致错误作为
执行超时到期。超时期在 操作或服务器的完成未响应。这 声明已终止
。
为此,我更新了 myApplicationContext的构造函数中的代码 this.database.commandtimeout = 180; 上面的命令应解决我的超时问题。但是我找不到这个问题的根本原因。 为了理解这种类型的超时问题,可能有三个原因; 您能告诉我该错误的主要根本原因是什么?
此查询:
UPDATE [dbo].[EmployeeTable]
SET [Name] = @0,
[JoiningDate] = @1
WHERE ([EmpId]=@2);
通常不应需要2秒钟。它(大概是(更新了一排,这也不是2秒的操作,即使在很大的桌子上也是如此。您在EmployeeTable(EmpId)
上有索引吗?如果没有,那将解释2秒钟以及僵局的潜力。
如果您确实有索引,这也许还有其他事情正在发生。一个可以看的地方是桌子上的任何触发器。
如果它是随机的,则可能在您的应用程序更新行时访问数据库。
我们遇到了同样的问题。在我们的情况下,根本原因是BO报告在生产数据库上运行。这些报告是锁定行并导致我们的应用程序超时(由于这些报告是按需执行的(。
您可能想检查的其他事情:
- 您的桌子上有复杂的触发器吗?
- 您表中使用的所有外国键都在外国表中索引吗?