gpt4 book ai didi

python - Neo4j 慢?我一定做错了什么,请告诉我它是什么

转载 作者:行者123 更新时间:2023-11-28 18:53:03 25 4
gpt4 key购买 nike

我看到嵌入式 Neo4j 产生了一些不太可能的性能结果,从表面上看它比预期慢了几个数量级,所以我假设我“做错了”,尽管我没有做任何复杂的事情。

我正在为 Neo4j 使用最新的嵌入式 python 绑定(bind) (https://github.com/neo4j/python-embedded)

from neo4j import GraphDatabase
db = GraphDatabase('/tmp/neo4j')

我创建了 1500 个具有简单属性的假产品:

fake_products = [{'name':str(x)} for x in range(0,1500)]

...并从中创建节点,我连接到子引用节点:

with db.transaction:
products = db.node()
db.reference_node.PRODUCTS(products)

for prod_def in fake_products:
product = db.node(name=prod_def['name'])
product.INSTANCE_OF(products)

现在,在我看来,我在文档中看到的代码几乎完全相同:

PRODUCTS = db.getNodeById(1) 
for x in PRODUCTS.INSTANCE_OF.incoming:
pass

...在我的 Macbook Pro 上迭代这 1500 个节点需要 >0.2s。什么。(编辑:我当然多次运行这个查询所以至少在 python 绑定(bind)中它不是冷缓存的问题)

我将其放大到 15k,用了 2 秒。我下载了 Gremlin 并发出了一个等效的查询来调查它是 neo4j 还是 python 绑定(bind):

g.v(1).in("INSTANCE_OF")

.. 第一次尝试似乎花了大约 2 秒,第二次运行时似乎几乎立即完成。

知道为什么这么慢吗?我得到的结果一定是我的某种错误。

最佳答案

这是 Neo4j 延迟加载数据而不进行任何预取。在第一次运行时,您正在访问磁盘,在第二次运行时,缓存是温暖的,这是您的真实生产场景。

关于python - Neo4j 慢?我一定做错了什么,请告诉我它是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9130370/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com