【问题标题】:Neo4j's advanced mapping mode performanceNeo4j 的高级映射模式性能
【发布时间】:2013-03-05 10:14:23
【问题描述】:

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

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

为了记录,我正在使用 Spring 的 @Transactional 支持。

【问题讨论】:

    标签: java performance neo4j spring-data-neo4j


    【解决方案1】:

    是的,这是真的,因为高级映射只是围绕节点和关系的一个薄包装器,并写入数据库(并且也读取)。简单映射复制数据进出。为了保持性能优势,仅在事务中使用高级映射,您会很高兴。

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

    【讨论】:

      【解决方案2】:

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

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

      所以我切换到高级映射来摆脱不必要的标签获取。在我看来,简单映射不应该再可用了,因为它与新的基于标签的 TypeRepresentationStrategy 配合得非常糟糕。似乎它不再适合标签了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-01-30
        • 1970-01-01
        • 1970-01-01
        • 2023-02-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-16
        相关资源
        最近更新 更多