【问题标题】:Using transactional Cypher REST endpoint to create indexes使用事务性 Cypher REST 端点创建索引
【发布时间】:2016-01-07 11:43:54
【问题描述】:

我应该使用separate URL 在 Neo4j 中创建架构索引,还是应该能够使用事务 Cypher enpoint (db/data/transaction/commit)?

我问这个的原因是我得到了

Neo.TransientError.Transaction.DeadlockDetected,LockClient[3] can't wait on resource RWLock[SCHEMA(0), hash=833390523] since => LockClient[3] <-[:HELD_BY]- RWLock[SCHEMA(0), hash=833390523] <-[:WAITING_FOR]- LockClient[2] <-[:HELD_BY]- RWLock[SCHEMA(0), hash=833390523]

提交简单查询时

CREATE INDEX ON :Person(name)

到一个空数据库(版本 2.3.1)。重新启动和重新创建 Neo4j 数据库没有帮助。

更新:经过额外调查,我意识到只有当我同时并行发送两个CREATE INDEX 命令时才会返回错误。按顺序运行它们效果很好。

【问题讨论】:

    标签: neo4j cypher


    【解决方案1】:

    您绝对可以使用事务端点来创建索引。

    我已经使用httpie 客户端成功运行了它:

    http -a neo4j:<mypw> -b -j localhost:7474/db/data/transaction/commit \
     statements:='[{"statement": "create index on :Person(name)"}]'
    

    请注意,不能在同一事务中执行 create index 操作和变异内容(CREATEMERGESET、...)。

    查看data/graph.db/messages.log 以获得更多信息。

    关于您的更新

    索引操作需要锁定,因此它们不能并行运行。

    【讨论】:

    • 谢谢,会看看。但有时它确实有效。
    • 我跟踪了messages.log - 没有记录关于我的问题的信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-10
    • 2013-05-19
    • 2020-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多