Neo4J Enterprise медленнее сообщества? - PullRequest
2 голосов
/ 23 апреля 2020

Я проводил некоторые тесты между Neo4J Community 3.3.3, Enterprise 3.3.9 и Enterprise 3.5.17.

К моему удивлению, чем новее версия, тем больше времени требуется для обработки запросов ,

И да, я проверял, что все индексы (как внутренние, так и APO C по всем параметрам, которые я использую для поиска) были на месте, когда я переносил БД. А для версии 3.5 я даже обновил индексы lucene до исходных, как и предлагалось.

Вот мои результаты для следующих запросов, которые дают около 12000 результатов каждый (около 500000 дБ)

PROFILE MATCH (u:User{uid:'16c01100-aa92-11e3-a3f6-35e25c9775ff'}), 
(u)<-[:BY]-(ctx:Context) 
WITH COLLECT (DISTINCT ctx.uid) as contexts 
WITH 'context:('+apoc.text.join(contexts,' ')+')' AS query 
CALL apoc.index.relationships('BY',query) 
YIELD start, rel 
WHERE 'Statement' IN LABELS(start) 
RETURN DISTINCT start, rel;

3.3.3 сообщество: 3500 мс (1000 мс последовательных загрузок)

3.3.9 предприятие: 1850 мс (1350 мс)

3.5.17 предприятие: 3500 мс (1500 мс)

и затем для этого вида запроса:

PROFILE MATCH (u:User{uid:'16c01100-aa92-11e3-a3f6-35e25c9775ff'}), 
(u)<-[rel:BY]-(s:Statement) 
RETURN distinct s, rel;

3.3.3 сообщество: 1500 мс (1000 мс последовательных нагрузок)

3.3.9 предприятие: 3100 мс (1300 мс)

3.5.17 предприятие: 4000 мс (2800 мс)

Я также заметил, что собственные индексы отношений намного медленнее, чем индексы apo c.

Например, для двух запросов:

APO C :

CALL apoc.index.relationships('IN','user:16c01100-aa92-11e3-a3f6-35e25c9775ff') 
YIELD start,end RETURN DISTINCT start, end;

против новых собственных индексов Neo4J:

CALL db.index.fulltext.queryRelationships('IN','user:16c01100-aa92-11e3-a3f6-35e25c9775ff') YIELD relationship WITH DISTINCT relationship, startNode(relationship) AS start, endNode(relationship) AS end RETURN start, end;

Индекс родных отношений в два (!) Раза медленнее.

Почему предприятие медленнее сообщества версия?

А как можно улучшить скорость?

...