Ich teste eine Java-Abfrage auf unterschiedliche Größe Datensatz, 100 Millionen bis 1 Milliarde Kanten (10 Kanten pro Vertex). Die Abfrage gibt nicht viele Daten zurück, 10 bis 20 Scheitelpunkte mit entsprechenden Kanten, aber es muss das gesamte Dataset gescannt werden.neo4j java Abfrage sehr langsam mit DB> 32G
Ich kann eine große Leistungseinbuße sehen, wenn die Datenbankgröße größer als 32 Gigs ist. änderte ich die Java-Heap-Größe zu 96G und mit den Garbage Collector Optionen gespielt (behalten -XX: + UseG1GC als die Verbesserung der Option) ein besseres Ergebnis zu erhalten, aber ich immer noch ein großes Bad in Leistungen erhalten:
100M Rand Datenbank ist 7.5G: Abfrage dauert 12 min 250M Rand, Datenbank ist 19G: 35 min 500M Rand, Datenbank ist 38G: 12 Stunden mit -XX: + UseG1GC 1B Rand, Datenbank ist 76G: 51 Stunden ohne -XX: + UseG1GC
Weiter für den 500 Millionen und 1 Milliarde Test kann ich sehen, dass der Großteil der Operationen System Operationen 60% gegenüber Benutzer Betrieb 40% sind (von Top Linux Befehl). Wenn ich den kleineren Test ausführe, handelt es sich zu 100% um Benutzervorgänge.
Sind die Java-GC-Verbesserungen in der Enterprise-Edition von Neo4j signifikant genug, um die Leistung der größeren Dataset-Abfrage im gleichen Verhältnis wie die kleinere zu bringen? Gibt es noch etwas, was ich tun kann, um die Leistung größerer Dataset-Abfragen zu verbessern?
tks
ich auf einem 32 Kern 244 RAM virtuellen Server alle diese Tests laufen.
Ich versuchte auch, die Seitencache-Größe zu erhöhen, aber ich sah keine Verbesserung.
Anwendungsfall: Ich suche nach einem Muster in den Daten, die Abfrage scannt den gesamten Datensatz, um 4 oder 5 Knoten zu finden, die ein spezielles Beziehungsmuster haben.
Die Abfrage in Threads ausgeführt, so dass alle 32 Kern gleichzeitig ausgeführt werden.
Ich habe versucht, zu ändern: - Heap Größe - - Cache-Größe - GC Optionen
Aber nicht viel Verbesserung pro Thread Anzahl der Knoten. Ist das eine Java-Einschränkung? danke
Zeigen Sie Ihre Datenmodell und Anwendungsfälle und einige Beispiel-Code. Ansonsten gibt es nicht genug Informationen. – cybersam
stimme w/cybersam zu. Entspricht die Hardware auch der Datensatzgröße? –
Siehe EXPLAIN, PROFILE, um Ihre Abfragen zu optimieren (oder bei Bedarf Indizes zu erstellen) –