知识库

Neo4j 当前事务提交过程顺序

Neo4j 中的事务使用读已提交隔离级别,这意味着它们将立即看到已提交的数据,而不会看到其他尚未提交的事务中的数据。这种隔离级别比串行化弱,但提供了显著的性能优势,同时对于绝大多数情况来说足够了。

此外,Neo4j Java API 允许显式锁定节点和关系。使用锁提供了通过显式获取和释放锁来模拟更高隔离级别效果的机会。例如,如果对一个公共节点或关系获取写锁,那么所有事务将在该锁上进行序列化,从而产生串行化隔离级别的效果。

在事务提交期间,所有应用于存储的事务操作都以特定顺序执行。目前,操作顺序如下:

  1. 标签令牌操作

  2. 关系类型令牌操作

  3. 属性键令牌操作

  4. 创建操作,针对以下对象:

    1. 属性

    2. 关系

    3. 关系组

    4. 节点

  5. 更新操作,针对以下对象:

    1. 属性

    2. 关系

    3. 关系组

    4. 节点

  6. 删除操作,针对以下对象:

    1. 属性

    2. 关系

    3. 关系组

    4. 节点

  7. Neo 存储命令

  8. 模式命令

  9. 计数存储操作

  10. 索引操作

  11. 旧索引操作

请注意,我们不能保证此顺序在未来版本的 Neo4j 中保持不变。如果由于某种原因发生变化,我们将相应地更新本文。