0

我设置了一个带有以下标签的 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                                                                                                                                                                         |
+-------------------+----------------+-----------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

如果我使用 size 而不是使用 count,我将没有相关的出版物。我不知道如何优化这个查询。返回结果需要 8 秒。所以我不知道这是否正常,因为例如我没有足够的 RAM。

4

1 回答 1

0

通过您的查询,您正在扫描您的所有关系,因为您的关系类型是动态的。

例如,如果你这样做,它会非常快(Neo4j 从它的统计数据库中获取计数):MATCH ()-[:ACTED_IN]->() RETURN count(*)

如果您有APOC并且想要了解有关数据库的一些统计信息,我建议您使用以下过程:CALL apoc.meta.stats yield labelCount, relTypeCount, propertyKeyCount, nodeCount, relCount, labels, relTypes, stats

于 2018-04-25T15:51:23.883 回答