Neo4J写:当写入很多时CPU占100%

时间:2014-11-13 07:56:04

标签: neo4j cypher node-neo4j

我在大约1分钟内跑了大约3k写入查询,CPU达到100%。 这是jstack日志: jstack when CPU at 100%

有人能告诉我jstack日志发生了什么,以便我可以优化我的写入吗?

我正在使用Node.js Neo4J客户端(在m3.xlarge AWS实例上运行)来编写我的更改。

谢谢。

1 个答案:

答案 0 :(得分:1)

你的踪迹看起来不错,只是几个线程忙着读东西。

可能是垃圾收集导致的CPU峰值或其他在堆栈中看不到的东西。

你能分享你运行的(类型)陈述吗?

您的疑问:

  1. 仅在一个标签上合并
  2. 确保每个都有一个索引/约束:您在
  3. 上合并或匹配的Label(属性)
  4. 如果您在某个属性上匹配,则始终具有:Label及其索引:
  5. 如果您一直在使用通用guid,那么您可能还想添加一个泛型:节点标签

    create index on :Node(guid);
    create index on :Book(id); 
    
    
    'MERGE (u:Node{guid:{guid}})',
                'SET u.name={name}, u:Book'
    
    'MERGE (u:Node {guid:{guid}})',
    'SET u.name={name}, u.sub_type={sub_type}, u:Home:Area'
    
    // are you sure you mean :Book(id) not :Book(guid) ?
    'MATCH ( e:Node {guid:{guid}} ), (m:Book{id:{id}})',
    'MERGE (e)<-[r:MEMBER]-(m)',
    'return r'