Neo4j запрашивает очень медленно - PullRequest
0 голосов
/ 25 апреля 2018

Я настроил базу данных Neo4j 3.3.5 со следующими метками:

  • Метка: 30K
  • Эксперт: 304K
  • Публикация: 28M

Между тегами и публикациями существует 1,2B взаимосвязь.И 455K отношений между публикациями и экспертами.

Я провел тесты на Mac (16G - Java 9) и Thinkpad (32G - Ubuntu Server Java 8).Это одинаково для обоих: очень медленно.Моя база данных на диске ~ 50G.

У меня есть только один индекс на имя тега.Это единственный критерий, который я использовал.

Следующий запрос занимает 8 секунд:

MATCH (expert:Expert)-[:PUBLISHED]->(publication:Publication)-[:HAS_TAG]->(tag:Tag)
USING INDEX tag:Tag(name)
WHERE tag.name IN ["Enzymes", "Metabolism", "Peptides"]
WITH expert, count(DISTINCT tag) AS relevantNumberOfTags, count(DISTINCT publication) AS relevantNumberOfPublications
WHERE relevantNumberOfTags = 3
RETURN expert.name, relevantNumberOfPublications
ORDER BY relevantNumberOfPublications DESC
LIMIT 40;

ОБЪЯСНЕНИЕ запроса:

+-------------------+----------------+-----------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Operator          | Estimated Rows | Variables                                                                                     | Other                                                                                                                                                                           |
+-------------------+----------------+-----------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| +ProduceResults   |             40 | anon[311], anon[329], anon[335], relevantNumberOfPublications, expert, expert.name, ...       |                                                                                                                                                                                 |
| |                 +----------------+-----------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| +Projection       |             40 | expert.name, relevantNumberOfPublications -- anon[311], anon[329], anon[335], ...             | {expert.name : , relevantNumberOfPublications : }                                                                                                                               |
| |                 +----------------+-----------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| +Top              |             40 | anon[311], anon[329], anon[335], relevantNumberOfPublications, expert, relevantNumberOfTags   | anon[335]; 40                                                                                                                                                                   |
| |                 +----------------+-----------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| +Projection       |           3243 | anon[329], anon[335] -- anon[311], relevantNumberOfPublications, expert, relevantNumberOfTags | { : expert.name,  :   relevantNumberOfPublications@255}                                                                                                                         |
| |                 +----------------+-----------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| +Filter           |           3243 | anon[311], relevantNumberOfPublications, expert, relevantNumberOfTags                         | anon[311]                                                                                                                                                                       |
| |                 +----------------+-----------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| +Projection       |           4324 | anon[311] -- relevantNumberOfPublications, expert, relevantNumberOfTags                       | {expert : expert, relevantNumberOfTags : relevantNumberOfTags,   relevantNumberOfPublications@255 :   relevantNumberOfPublications@255,  : relevantNumberOfTags = {  AUTOINT1}} |
| |                 +----------------+-----------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| +EagerAggregation |           4324 | relevantNumberOfPublications, relevantNumberOfTags -- expert                                  | expert                                                                                                                                                                          |
| |                 +----------------+-----------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| +F ilter           |       18695308 | anon[22], anon[62], expert, publication, tag                                                  | tag.name IN {  AUTOLIST0}; tag:Tag                                                                                                                                              |
| |                  +----------------+-----------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| +Expand(All)      |       20141244 | anon[62], tag -- anon[22], expert, publication                                                | (publication)-[:HAS_TAG]->(tag)                                                                                                                                                 |
| |                  +----------------+-----------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| +Filter           |         454092 | anon[22], expert, publication                                                                 | publication:Publication                                                                                                                                                         |
| |                 +----------------+-----------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| +Expand(All)      |         454092 | anon[22], publication -- expert                                                               | (expert)-[:PUBLISHED]->(publication)                                                                                                                                            |
| |                 +----------------+-----------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| +NodeByLabelScan  |         304114 | expert                                                                                        | :Expert                                                                                                                                                                         |
+-------------------+----------------+-----------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

Если я используюразмер вместо использования количества, у меня не будет соответствующих публикацийЯ не знаю, как оптимизировать этот запрос.Требуется 8 секунд, чтобы вернуть результат.Так что я не знаю, нормально ли это, потому что мне не хватило бы оперативной памяти, например.

1 Ответ

0 голосов
/ 25 апреля 2018

С помощью вашего запроса вы проверяете все ваши отношения, потому что тип ваших отношений является динамическим.

Например, если вы сделаете это, это будет очень быстро (Neo4j берет счет отего база данных статистики): MATCH ()-[:ACTED_IN]->() RETURN count(*)

Если у вас есть APOC и вы хотите получить некоторую статистику о вашей базе данных, я рекомендую вам использовать эту процедуру: CALL apoc.meta.stats yield labelCount, relTypeCount, propertyKeyCount, nodeCount, relCount, labels, relTypes, stats

...