最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

Neo4j“不能等待资源”锁定错误

IT培训 admin 4浏览 0评论

Neo4j“不能等待资源”锁定错误

我使用Node.js连接到托管的GrapheneDB Neo4j数据库,当试图添加大约1,500条记录时,我收到以下错误:

LockClient[19] can't wait on resource 
RWLock[NODE(248), hash=1917331445] since => LockClient[19] 
<-[:HELD_BY]- RWLock[INDEX_ENTRY(153122458561043471), hash=1171319680] 
<-[:WAITING_FOR]- LockClient[15] <-[:HELD_BY]- RWLock[NODE(248), hash=1917331445]

生成此代码的代码来自一个获取JSON对象列表然后将它们存储在Neo4j中的路由。导入大约1,500条记录时,我会始终如一地得到此错误。

使用seraph-model进行数据库访问并只查找记录,更新是否存在或创建它(如果不存在)。

有什么建议在哪里调查?

回答如下:

看起来您正在同时执行多个大型事务处理图表的同一区域。

当Neo4j执行写操作时,将在该节点/关系上获取写锁,并在事务关闭时释放。同时运行并试图获取已锁定实体上的写锁定的其他事务需要等待 - 否则就会打开一盒潘多拉的不一致性。如果锁的所有者是一个相当长的运行事务,另一个可能会遇到超时 - 这将是上面的错误消息。

所以你可以:

  1. 序列化操作:不要并行写入,而是确保在给定时间只处理一个胖事务
  2. 使事务更小:如果在单个事务中执行的操作更少,则持续时间将更短,等待锁定的其他事务将不会超时。

Neo4j“不能等待资源”锁定错误

我使用Node.js连接到托管的GrapheneDB Neo4j数据库,当试图添加大约1,500条记录时,我收到以下错误:

LockClient[19] can't wait on resource 
RWLock[NODE(248), hash=1917331445] since => LockClient[19] 
<-[:HELD_BY]- RWLock[INDEX_ENTRY(153122458561043471), hash=1171319680] 
<-[:WAITING_FOR]- LockClient[15] <-[:HELD_BY]- RWLock[NODE(248), hash=1917331445]

生成此代码的代码来自一个获取JSON对象列表然后将它们存储在Neo4j中的路由。导入大约1,500条记录时,我会始终如一地得到此错误。

使用seraph-model进行数据库访问并只查找记录,更新是否存在或创建它(如果不存在)。

有什么建议在哪里调查?

回答如下:

看起来您正在同时执行多个大型事务处理图表的同一区域。

当Neo4j执行写操作时,将在该节点/关系上获取写锁,并在事务关闭时释放。同时运行并试图获取已锁定实体上的写锁定的其他事务需要等待 - 否则就会打开一盒潘多拉的不一致性。如果锁的所有者是一个相当长的运行事务,另一个可能会遇到超时 - 这将是上面的错误消息。

所以你可以:

  1. 序列化操作:不要并行写入,而是确保在给定时间只处理一个胖事务
  2. 使事务更小:如果在单个事务中执行的操作更少,则持续时间将更短,等待锁定的其他事务将不会超时。
发布评论

评论列表 (0)

  1. 暂无评论