代码之家  ›  专栏  ›  技术社区  ›  alexanoid

Neo4j获取/释放写锁-真/假vs删除

  •  0
  • alexanoid  · 技术社区  · 7 年前

    在Neo4j中,为了模拟 SERIALIZABLE 事务隔离级别我需要显式设置虚拟属性,例如:

    SET n._lock_ = true
    

    但是如何正确地释放锁,我需要 SET n._lock_ = false 或者通过 REMOVE n._lock_ 查询

    2 回复  |  直到 7 年前
        1
  •  3
  •   cybersam    7 年前

    您正在使用记录的 default locking behavior .根据文件 write lock 是“交易完成时释放”。

    因此,一旦设置了写锁,直到您的密码查询(和事务)完成后才会释放它。

    要包含的原因 REMOVE n._lock_ 子句,以便确保 _lock_ 属性,其目的是作为临时黑客,在查询结束后不再存在。(但删除该属性并不负责释放写锁。)

        2
  •  0
  •   logisima    7 年前

    我不明白你想做什么。

    Neo4j是事务性的,因此存在事务隔离,Neo4j为您管理锁。

    有时,通过设置虚拟属性手动创建锁很有用,例如为了避免死锁。

    提交/回滚事务时会释放锁。