gpt4 book ai didi

sql - 执行超时已过期 - 随机用于简单的更新命令

转载 作者:行者123 更新时间:2023-12-04 14:00:58 26 4
gpt4 key购买 nike

我使用 Entity Framework (EF6) 随机收到执行超时过期错误。在执行以下更新命令时,它会给出随机执行超时错误。

UPDATE [dbo].[EmployeeTable] SET [Name]=@0,[JoiningDate]=@1 WHERE ([EmpId]=@2)



上面的更新命令很简单,更新EmployeeTable需要2-5秒。但有时相同的更新查询需要 40-50 秒并导致错误

Execution Timeout Expired. The timeout period elapsed prior to completion of the operation or the server is not responding. the statement has been terminated



.

为此,我在 的构造函数中更新了我的代码MyApplicationContext 可以更改类以包含以下属性

this.Database.CommandTimeout = 180;



上面的命令应该可以解决我的超时问题。但我无法找出该问题的根本原因。

据我了解,这种类型的超时问题可能有三个原因;
  • 某处出现死锁
  • 数据库的统计信息和/或查询计划缓存不正确
  • 查询太复杂,需要调优

  • 你能告诉我这个错误的主要原因是什么吗?

    最佳答案

    这个查询:

    UPDATE [dbo].[EmployeeTable]
    SET [Name] = @0,
    [JoiningDate] = @1
    WHERE ([EmpId]=@2);

    通常不应花费 2 秒。它(大概)正在更新单行,即使在非常大的表上,这也不是 2 秒的操作。你在 EmployeeTable(EmpId) 上有索引吗? ?如果不是,这将解释 2 秒以及死锁的可能性。

    如果您确实有索引,则这可能是其他原因。一个要查找的地方是 table 上的任何触发器。

    关于sql - 执行超时已过期 - 随机用于简单的更新命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44801117/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com