gpt4 book ai didi

neo4j - 如何避免neo4j的死锁

转载 作者:行者123 更新时间:2023-12-03 23:54:36 26 4
gpt4 key购买 nike

我刚刚了解到,当我在 neo4j 中创建 2 个节点之间的关系时,它们都被锁定( http://docs.neo4j.org/chunked/stable/transactions-locking.html )。
但是,在我们的项目中,我们有可以实例化的元素,并且最终在图中有两个节点通过“INSTANCE_OF”关系链接。
例如,如果我实例化元素 B,我有一个新元素 B1。它们像 B<-INSTANCE_OF-B1 一样存储在图中。
我的问题是许多用户可以同时实例化元素 B 并导致死锁。
我怎样才能避免这些僵局?我不需要在 B 上写属性,我只想在我的图中将 B1“附加”到 B。在 B1 中拥有一个属性来表示 B id 是否是更好的解决方案,而不是将它们与关系联系起来?我认为不会,因为我们失去了所有的图形兴趣,但我真的不知道如何避免这些死锁?

非常感谢您的帮助

最佳答案

你有两种策略:
第一个是悲观的,使用 LockManager getWriteLock 方法在添加相关 B1 节点之前获取节点 B 上的排他锁,并在关系创建完成后立即解锁;
第二种,比较乐观的,就是在死锁的情况下执行重试策略,可以抓到DeadlockDetectedException异常并重试操作直到成功。

关于neo4j - 如何避免neo4j的死锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20495549/

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