Java Neo4j写性能惊人
我正在使用新的bolt客户端对neo4j 3.0.7进行性能测试,我看到了一些奇怪的结果。 我正在尝试一个非常简单的场景:增加1000个节点(使用merge命令) 我尝试了几种方法:Java Neo4j写性能惊人,java,neo4j,Java,Neo4j,我正在使用新的bolt客户端对neo4j 3.0.7进行性能测试,我看到了一些奇怪的结果。 我正在尝试一个非常简单的场景:增加1000个节点(使用merge命令) 我尝试了几种方法: 1个命令的1000个同步事务 1000命令的1个事务处理 1个命令的1000个异步事务(使用10个线程) 这是我正在执行的查询(我对person.id有唯一性约束): “合并(n:person{id:'123})集合n.name='Diana Kesha',n.address='aaa'..返回n.id” 以下是我
我错过了什么 您有两个相互冲突的数字,您的意思是1000还是1000k=1M 1M更新的2秒速度太慢 我建议每个tx执行1k到10k更新,然后并行化tx
UNWIND {data} as row
MERGE (n:Person {id:row.id})
ON CREATE SET n.name=row.name n.address=row.address
因此,测试1000个请求(并行),每个请求有1000个更新,每次发送一个包含1000个地图的列表
UNWIND {data} as row
MERGE (n:Person {id:row.id})
ON CREATE SET n.name=row.name n.address=row.address
您有两个相互冲突的数字,您的意思是1000还是1000k=1M 1M更新的2秒速度太慢 我建议每个tx执行1k到10k更新,然后并行化tx
UNWIND {data} as row
MERGE (n:Person {id:row.id})
ON CREATE SET n.name=row.name n.address=row.address
因此,测试1000个请求(并行),每个请求有1000个更新,每次发送一个包含1000个地图的列表
UNWIND {data} as row
MERGE (n:Person {id:row.id})
ON CREATE SET n.name=row.name n.address=row.address
您正在执行哪些查询?你是如何执行它们的?你有什么索引?还有,你有没有用你的查询运行PROFILE?对于具有大量db点击的查询,您可能希望将其粘贴到描述中,展开概要文件图的所有节点。但是,它仍然不能解释只有一个核心参与进程的事实。请保留图像内联,在上下文中阅读比转到另一个选项卡更容易。您是否在描述中对每个查询使用精确的查询,每次合并同一个节点,或者所有合并的数据都不同且唯一?您正在执行哪些查询?你是如何执行它们的?你有什么索引?还有,你有没有用你的查询运行PROFILE?对于具有大量db点击的查询,您可能希望将其粘贴到描述中,展开概要文件图的所有节点。但是,它仍然不能解释只有一个核心参与进程的事实。请保留图像内联,在上下文中阅读比转到另一个选项卡更容易。您是否在描述中对每个查询使用精确的查询,每次合并同一个节点,还是所有合并的数据都不同且唯一?谢谢。我将尝试您的解决方案并报告。好的。所以我尝试了放松,1000个节点的放松速度快了300毫秒。但我的问题是,我不能使用它,因为我不能让我的整个区块失败。有没有一种方法可以在不使用事务的情况下以合理的性能将数据插入Neo4j?谢谢。我将尝试您的解决方案并报告。好的。所以我尝试了放松,1000个节点的放松速度快了300毫秒。但我的问题是,我不能使用它,因为我不能让我的整个区块失败。有没有一种方法可以在不使用事务的情况下以合理的性能向Neo4j插入数据?