由于以下用例:
(:Product)-[:HAS_PRICE]->(:Price)-[:HAS_CURRENCY]->(:Currency)
支持1000种产品且只支持一(1)种货币,我们说(:Currency {code:'USD'})
。
要为每个产品插入价格,将针对节点(:Currency {code:'USD'}
创建一千(1000)个关系。
有3个工作线程收到价格并进行设置,(:Currency {code:'USD'}
节点将被锁定为其他两个工作人员,而其中一个工作人员创建边缘-["HAS_CURRENCY]->
。
实现RETRY / BACK-OFF方法可以避免一些故障,但RETRY阈值必须足够高(在我的情况下大约为100)以避免所有死锁并设置长的BACK-OFF延迟是不值得的。
Chris Vest评论了a previous post中锁定和事务隔离行为的修改。
我们可以做些什么来避免这个问题?有关服务器配置,数据建模等的任何提示吗?
提前致谢。