2015-05-15 11 views
8

Mein System ist 8-Core und 16 GB RAM. Aber immer noch durchqueren: Benutzerknoten benötigen zu viel Zeit ungefähr 25 Sekunden.Neo4j Abgleich/Abfrage Abfrage dauert zu viel Zeit 25 Sekunden

Ich liege 2 Eigenschaften wie in Neo4j-wrapper.conf:

wrapper.java.initmemory = 6144 
wrapper.java.maxmemory = 12288 
  • : User Rückkehr Felder 15-20;
  • 2-3 Indizes (created_at Index)
  • Sortierung auf created_at DESC getan
  • insgesamt 5 Millionen Knoten mit Datenbankgröße von fast 8 GB
  • : Benutzerknoten sind 4 Millionen.
  • Die Seitennummerierung ist abgeschlossen. Pro Seite werden 10 Datensätze abgerufen.
  • Ohne ORDER Durch gibt es Ergebnisse in 0,3 Sekunden.
MATCH (u:User) 
RETURN id(u) as id, u.username, u.email, (..15 More fields..), u.created_at as created_at 
ORDER BY created_at desc 
SKIP 0 LIMIT 10 

Wie kann ich Antwortzeit von Neo4j Server reduzieren? Welche neo4j.properties kann eingestellt werden, um die Ausführungszeit zu reduzieren?

Antwort

2

Ich hatte etwas Glück, indem ich sowohl den Initspeicher als auch den Maximalspeicher auf den gleichen Wert stellte (so dass der JVM keine Größenänderung vornehmen muss) und auch die Garbage Collection einstellte. geben Sie diese Werte in Ihrer Conf-Datei:

-Xmx4g #max 
-Xms4g #init 
-XX:+UseConcMarkSweepG #garbage collector 
+0

Diese 3 Einstellungen habe ich schon gemacht, trotzdem gibt es keine große Verbesserung. –

3

Indizes in Neo4j werden zum Nachschlagen von Knoten und nicht zum Sortieren verwendet. Wenn Sie eine sortierte Liste von 4M-Knoten paginieren möchten, dauert es einige Zeit.

Der Weg, um das zu lösen, ist durch richtige Datenmodellierung. Wenn Sie eine neue User Beziehung zu der erstellen, die vor der aktuellen erstellt wurde, bilden die Benutzer in Ihrem System eine verknüpfte Liste, die die Benutzer in der richtigen Reihenfolge hält.

Diese verkettete Liste ist schnell und einfach zu durchlaufen.

+0

Danke Stefan. Kann diese Abfrage selbst nicht zeitoptimiert sein oder die neo4j-Konfiguration ändern? –

+0

Höchstwahrscheinlich ja mit einer großen Menge an RAM und einigen JVM-Tuning. Ich bezweifle jedoch, dass wir dies hier auf SO beantworten können - es würde viel mehr Zeit als ein schnelles Q & A-Spiel erfordern. –

+0

: D Ich habe dich. Könnten Sie mich auf bestimmte Eigenschaften hinweisen, die ich optimieren und überprüfen kann? Es wird mir hilfreich sein. –

Verwandte Themen