SQL延迟更新操作

时间:2018-04-20 05:05:26

标签: sql sql-server multithreading lazy-evaluation

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

插入主实体必须快速可靠,更新附加表并不重要。我想知道(我不是数据库专家)是否存在类似于C#中的线程处理的SQL方法,以维护更新线程,当新实体到达以在插入后更新其他表时,可以唤醒该更新线程。该线程可以在“一个线程”中更新这些表以避免死锁。

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

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

1 个答案:

答案 0 :(得分:1)

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

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

另一种方法是在插入的表上添加触发器以便为您进行更新。听起来像第一个是你可能想要的。