Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Neo4j';s高级映射模式性能_Java_Performance_Neo4j_Spring Data Neo4j - Fatal编程技术网

Java Neo4j';s高级映射模式性能

Java Neo4j';s高级映射模式性能,java,performance,neo4j,spring-data-neo4j,Java,Performance,Neo4j,Spring Data Neo4j,我在SpringDataNeo4j项目中使用了Neo4j的简单和高级映射模式。因为我已经从简单映射切换到高级映射,所以项目的性能非常好,我的意思是比以前好多了。我没有确切的数字,但肯定有很多。有人能解释为什么高级映射模式优于简单映射吗 我已经阅读了SDN文档中的页面,但找不到确切的原因 作为记录,我使用的是Spring的@Transactional支持。没错,因为高级映射只是围绕节点和关系的一个薄薄的包装,并写入db(以及读取)。简单映射将数据复制出和复制入。为了保持这种性能优势,只在事务中使用

我在SpringDataNeo4j项目中使用了Neo4j的简单和高级映射模式。因为我已经从简单映射切换到高级映射,所以项目的性能非常好,我的意思是比以前好多了。我没有确切的数字,但肯定有很多。有人能解释为什么高级映射模式优于简单映射吗

我已经阅读了SDN文档中的页面,但找不到确切的原因


作为记录,我使用的是Spring的@Transactional支持。

没错,因为高级映射只是围绕节点和关系的一个薄薄的包装,并写入db(以及读取)。简单映射将数据复制出和复制入。为了保持这种性能优势,只在事务中使用高级映射,您会很高兴的


如果您开始修改事务之外的实体,您将获得脏对象跟踪,它将再次开始复制内容。

我注意到,使用简单映射时,会有许多不必要的标签获取,即使不应该这样做。即使不使用@Fetch,SDN仍会(出于某种原因)为相关集合中的所有节点获取标签,在某些情况下甚至更进一步

例如,我有两个团队,大约有100名成员,并且团队也连接在一起(作为父子关系),并且@Fetch没有在任何地方使用,性能仍然很糟糕

因此,我切换到高级映射以消除不必要的标签获取。在我看来,简单映射不应该再可用了,因为它与新的基于标签的TypeRepresentationStrategy配合得太差了。看起来它已经不再适合标签了