SQL 惰性更新操作

SQL lazy update operations

我们将 SQL 个实体一个接一个地插入到 table 中。简单快捷。在实体插入之后,我们正在执行一个 SP 来根据新实体更新几个 tables,更新一些计算字段,一些查找 tables 以帮助找到这个新实体。这会花费很多时间,有时会陷入死锁状态。

插入主要实体必须快速可靠,更新其他 tables 并不重要,立即发生。我想知道(我不是 DB 专家)是否有一种类似于 C# 中线程处理的 SQL 方法来维护更新线程,当新实体到达时可以唤醒更新附加 [=插入后 24=]s。该线程可以更新 "one thread" 中的这些 table 以避免死锁。

我可以想象一个 sql 作业每分钟执行一次,搜索新实体并执行更新,但对我来说似乎太粗糙了。

在 MS SQL 端实施此操作的最佳做​​法是什么?

您可以通过多种方式实现这一目标。你提到两者可以分开完成——立即更新并不重要。在这种情况下,您可以设置一个 SQL 代理到 运行 一个存储过程来检查丢失的记录并执行更新。

另一种方法是将整个原始更新放入负责执行更新和所有内务处理工作的存储过程中,然后您要做的就是使用正确的参数调用存储过程,它会完成所有在幕后工作。

另一种方法是在插入的 table 上添加触发器来为您执行更新。听起来第一个就是您可能想要的。