簡體   English   中英

Neo4j 3.5 查詢性能問題

[英]Neo4j 3.5 Query Performance Issue

我在 neo4j(社區 3.5)中運行以下查詢

MATCH (a:master_node:PERF:Application)-[r1]->(n:master_node:PERF)-[r:AFFINITY]->(m:master_node:PERF)<-[r2]-(a1:master_node:PERF:Application)
WHERE exists(n.latest_ingestion)
  AND exists(m.latest_ingestion)
  AND id(a) <> id(a1)
MERGE (a)<-[:APP_AFFINITY]-(a1)

我對 neo4j 的配置如下:

heap_size : 8GB
page_cache : 4GB

並且我在屬性(名稱)和以上查詢上運行超過 100k 個節點的標簽(應用程序)的索引。但是查詢運行時間更長並且消耗了大量 memory。

請幫助我提高性能。

您沒有在此查詢中使用name屬性,因此您的索引將無濟於事。 可能有幫助的唯一索引是:master_node(latest_ingestion):PERF(latest_ingestion) ,這可能會將查詢從使用 label 掃描更改為索引掃描,具體取決於數據庫統計信息。

此外,您可能需要考慮批量處理這些更新,可能使用 APOC 過程中的apoc.periodic.iterate() 就像是:

CALL apoc.periodic.iterate("
  MATCH (a:master_node:PERF:Application)-->(n:master_node:PERF)-[:AFFINITY]->(m:master_node:PERF)<--(a1:master_node:PERF:Application)
  WHERE exists(n.latest_ingestion)
    AND exists(m.latest_ingestion)
    AND id(a) <> id(a1)
  RETURN a, a1",
  "MERGE (a)<-[:APP_AFFINITY]-(a1)", 
  {}) YIELD batches, total, errorMessages
RETURN batches, total, errorMessages

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM