Neo4j Cypher,插入批量关系时出现死锁异常。

时间:2016-09-06 16:59:24

标签: neo4j locking cypher deadlock bulkinsert

由于以下用例:

(: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中锁定和事务隔离行为的修改。

我们可以做些什么来避免这个问题?有关服务器配置,数据建模等的任何提示吗?

提前致谢。

0 个答案:

没有答案