neo4j中的多个“CREATE INDEX”会减慢图形数据库的搜索/更新速度吗?

时间:2015-02-02 18:20:03

标签: indexing neo4j py2neo

最近,我注意到从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()

2 个答案:

答案 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堆大小是根据可用的系统资源动态计算的。",似乎需要手动设置中型或大型数据集。