Почему производительность запросов Cypher увеличивается после восстановления базы данных neo4j? - PullRequest
1 голос
/ 04 февраля 2020

Я использую neo4j 3.5.13 Community Edition. Мое приложение периодически делает набор запросов-шифров:

MERGE (unit:unitOfMeasureRegion{ name:"unit_1" })
MERGE (object:object { name: "obj_1" })
MERGE (object)-[:HAS_MEASUREMENT_UNITS]->(unit)
MERGE (object)-[:HAS_ROLE]->(role:someRole)
MERGE (object)<-[:PROVIDED_BY]-(value:SecAttributeValue)-[:IS_PART_OF]->(unit)
SET value.begin_of_time_region=datetime({somedate})
SET value.end_of_time_region=datetime({somedate})
RETURN value.begin_of_time_region, value.end_of_time_region, unit.name, object.name, id(value)

... и:

MATCH (unit)<-[:HAS_MEASUREMENT_UNITS]-(object:object { name: "object_1" }) 
WITH object, unit MATCH (object)<-[:PROVIDED_BY]-(value:SecondsAttributeValue)-[:IS_PART_OF]->(unit) 
WITH object, value, unit 
MATCH (object)-[:HAS_ROLE]->(role:someRole) 
RETURN value.begin_of_time_region, value.end_of_time_region, unit.name, id(value)

Также я создал индексы:

Indexes
   ON :object(Name) ONLINE 
   ON :unitOfMeasureRegion(Name) ONLINE 

Я очищаю базу данных MATCH (n) DETACH DELETE n (было около 70 000 узлов), и с этого момента некоторая часть запросов запускается очень медленно, т.е. для некоторой метки value:SecondsAttributeValue они в порядке, но если я изменю ее на другую метку, например value:MinuteAttributeValue затем запрашивает замедление.

Я также установил настройки памяти в neo4j.conf в соответствии с neo4j memrec.

В качестве обходного пути я воссоздал базу данных neo4j, поэтому проблема исчезла (все запросы выполняются довольно быстро ).

Что может быть причиной этого?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...