I'm doing performance tests for neo4j 3.0.7 using the new bolt client and I see some strange results. I'm trying a very simple scenario: upserting 1000 nodes (using merge command).
I tried several approaches:
- 1000 synchronous transactions of 1 command
- 1 transaction of 1000 command
- 1000 asynchronous transactions of 1 command (using 10 threads)
This is the query I am executing (I have a uniqueness constraint on person.id): "Merge (n:person {id:'123'}) SET n.name='Diana Kesha', n.address='aaa' .... RETURN n.id"
Here is the execution plan of my query:
Here are the results:
- ~3sec per 1000 synchronous transactions (notice it not 1000k)
- ~2sec per 1 transaction of 1000 commands
- ~2.5sec per 1000 asynchronous transactions
Absolutely unacceptable results for a 64 cores with 128G of RAM machine!
Now, going deeper, I noticed that Neo4j is using 25% of RAM (which is fine I think) but only 1 core when using the 1st 2 options, and 10 cores when using 10 threads.
also I noticed that changing Neo4j's working threads has no impcat on the amount of actualy cores being used.
What am I missing ?
