gpt4 book ai didi

sql - 更新闭包表的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-03 00:17:03 32 4
gpt4 key购买 nike

我有一个使用 adjacency list 关联记录的表方法(表 A),以及另一个使用 closure table 关联相同记录的表(表B)。它们都捕获相同的图表,因此它们都需要保持同步。

问题是,更新闭包表的最佳方法是什么?

据我所知,有三种选择:

  1. 触发器。在 A 处执行 INSERT/UPDATE/DELETE 时,运行一个存储过程来计算新的闭包。 缺点:A的更改会导致长时间的同步(锁定?)操作;可能出现死锁(?)。
  2. 应用程序代码。将A中的更改缩小到添加/更新/删除方法(例如存储库模式),并通过调用计算新闭包的存储过程来重载它们。 缺点:到数据库的额外往返;如果另一个 thead 同时以相反的方式修改 AB,可能会出现完整性问题;比如说,如果另一个应用程序决定修改A而不是B,则可能存在完整性问题。
  3. 后台更新程序。编写一个辅助进程,不断查找A的更新并对闭包表进行相应的更新。 缺点:复杂(额外的编写和管理服务);没有同步的窗口。

即使没有“最佳”选择,任何有关权衡的想法都将不胜感激!

最佳答案

如果您的层次结构像我处理过的大多数层次结构一样大多是静态的,我可能会使用触发器。实际上取决于更新频率和读取负载。

关于sql - 更新闭包表的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5601658/

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