最近,我注意到从CSV文件(创建节点和关系)上传到我的图形数据库已经大大减慢了。在寻找罪魁祸首的过程中,我想知道做多个" CREATE INDEX:[节点标签](节点属性)"可能是其中一个原因。有谁知道打字的效果,例如"创建指数:人(姓名)"在同一图表数据库?我意识到无论何时我将另一个CSV文件上传到同一个图形数据库,我都在做"创建索引:人(姓名)"。这是否意味着每次都会创建Person的索引,从而产生多个索引文件?或者,只有一个唯一的索引表用于标签和属性对的唯一名称?谢谢。
这是我更新CSV文件数据的密码查询:每个文件包含三列双精度数据和5000行。更新每个文件大约需要300秒(5分钟)。这似乎太长了。
from py2neo import Graph
import glob
for file_path in glob.glob("*.csv"):
paths = 'File:'+file_path
tx= graph.cypher.begin()
qs1 = "LOAD CSV WITH HEADERS FROM {file_path} AS csvLine \
MATCH (p1:Person {Id:csvLine.name}),(p2:Product {Id:csvLine.ID}) \
MERGE (p1)-[s:BOUGHT]-(p2) \
ON CREATE SET s.numbers=csvLine.numbers,
s.price =csvLine.price,
s.location=csvLine.location,
s.date = csvLine.date
tx.append(qs1, parameters = {"file_path":paths})
tx.commit()
答案 0 :(得分:0)
只有一个索引。当您在浏览器中执行:schema
并在shell中执行schema
时,您可以看到它们。
也许你可以分享你的load-csv语句?你拥有的索引。
最好也是分享个人资料信息(在shell中用profile
作为你的陈述的前缀),并注意这些问题:
http://neo4j.com/developer/guide-import-csv/
ESP。急切的装载。
答案 1 :(得分:0)
据怀疑,罪魁祸首证明是记忆问题。 按照" Memory Config"中的说明进行操作。在http://neo4j.com/developer/guide-import-csv/中,(1)neo4j-wrapper和(2)内存映射设置适合我的服务器规范。
应该注意的是,虽然配置文件说" Java堆大小是根据可用的系统资源动态计算的。",似乎需要手动设置中型或大型数据集。