今天上午,经过一些努力(参见:Upgrading a neo4j database from 2.0.1 to 2.1.3 fails),我将我的数据库从2.0.1升级到2.1.3。我升级的主要目标是获得某些查询的效果(请参阅:Cypher SORT performance)。
一切似乎都在起作用,除了所有Cypher查询 - 无一例外 - 变得越来越慢。过去需要75毫秒的查询现在需要近2000毫秒。
由于我在Azure上使用A1(1xCPU~2GB RAM)虚拟机运行,我认为给neo4j更多ram和额外的核心会有所帮助,但升级到A2 VM之后我会得到或多或少相同的结果
我不知道,通过备份和升级/使用该数据库,我是否放松了索引?我的数据库中可能有50K节点,所以它并不那么壮观,对吧?
我现在仍在运行A2 VM(2xCPU,~4GB RAM),但不得不再次降级到2.0.1。
更新:#1 2014-08-12
在阅读Michael的第一条评论后,关于如何使用shell检查我的索引,我做了以下事情:
Neo4jShell.bat
然后执行了Schema
命令。这产生了以下响应: Neo4jInstall.bat remove
命令卸载了2.0.1服务。Neo4jInstall install
命令安装了2.1.3服务。Neo4jShell.bat
,然后执行schema
命令。这产生了以下响应: 我认为可以安全地得出结论,迁移过程(在2.1.3中)或备份过程(在2.0.1中)已经从我的数据库中删除了索引。这解释了为什么我备份的数据库比在线数据库(~380MB)小得多(~110MB)。迁移到2.1.3后,我的数据库变得更小(~90MB)。
现在的问题是,它只是重建我的索引并完成它吗?
更新:#2 2014-08-12
我想我已经回答了我自己的问题。在重新创建约束和索引之后,我的查询就像以前一样执行(有些甚至更快,如预期的那样)。
答案 0 :(得分:3)
最后,事实证明,在备份我的数据库(在2.0.1版本中)或在启动时的迁移过程中(在2.1.3版本中),我丢失了索引和约束。显而易见的解决方案是手动重新创建它们(http://docs.neo4j.org/chunked/stable/cypher-schema.html)并继续前进。