performance - Should neo4j be very slow on a lot of merge reqests? -


i'm experiencing slow neo4j, htop shows it's lucene ate cpus on server.

i'm writing data, attempting 50-500 cypher requests per second, each

foreach (id in {ids} | merge (:community {id: id})) 

all 3 request generators here https://github.com/publicradio/vk_graph_reflector/tree/master/lib/reflectors (yes, javascript es2015)

i've started suspect lucene slow down because of merge requests, right? can reason? how can optimise stuff if i'm right?

can share visual query plan?

just take query , prefix profile in browser.

i think it's number of things:

  1. use cypher parameters not string substitution
  2. try merge on single properties have constraint (or index)
  3. if don't need merge use match, i.e. if data exists !
  4. if don't need unique relationships use create, i.e. when know need connect new nodes existing nodes.

something this:

match (group:vk_group {id: {group_id} }) merge (post:vk_wall_post { id: {post_id}}) on create set post.date={post_date}  create unique (group)-[:published]-(post) foreach (track in {tracks} |     merge (tracknode:vk_track {id: track.id})       on create set tracknode.title=track.title,                     tracknode.duration=track.duration     merge (artist:artist {name: track.artist})     merge (tracknode)<-[:performed]-(artist)     merge (post)-[:attached]->(tracknode) ) 

alternatively able use match loop:

match (group:vk_group {id: {group_id} }) merge (post:vk_wall_post { id: {post_id}}) on create set post.date={post_date}  create unique (group)-[:published]-(post) unwind {tracks} track merge (tracknode:vk_track {id: track.id})         on create set tracknode.title=track.title,                       tracknode.duration=track.duration merge (artist:artist {name: track.artist}) merge (tracknode)<-[:performed]-(artist) merge (post)-[:attached]->(tracknode) 

Comments

Popular posts from this blog

Java 3D LWJGL collision -

spring - SubProtocolWebSocketHandler - No handlers -

methods - python can't use function in submodule -