我看过一个主题(Understanding Neo4j Cypher Profile keyword and execution plan),其中提到了个人资料关键字。
我无法在Neo4j 2.0.0RC1社区中使用它。
彼得写道,它没有完全实现。它会得到支持吗?
我的意思是,在我们调整查询时,观察计划的变化会很有趣......
答案 0 :(得分:18)
您仍然可以找到neo4j shell,您可以在其中运行profile
命令。
通过启动bin/neo4j-shell
或者通过切换到左侧“(i)”信息菜单中的旧web-ui并选择最下面的链接“webadmin” - > http://localhost:7474/webadmin
稍后,当更易于阅读和理解时,将向浏览器添加分析信息。
答案 1 :(得分:16)
从Neo4j 2.2开始,还有其他的分析工具。一些仅通过neo4j-shell或REST端点可用的功能现在也可以在Neo4j浏览器中使用,而且一些功能是全新的。
您现在可以直接在Neo4j浏览器repl中使用PROFILE
命令和cypher查询来执行查询并查看执行计划的可视化。
PROFILE
MATCH (n:Peter {foo: 'Paul'})
RETURN n.bar, ID(n)
-------------
n.bar ID(n)
Mary 951
此外,您现在可以检查查询计划而无需实际执行它,例如验证将更改数据库的查询。使用查询前面的EXPLAIN
命令执行此操作。请参阅文档中的15.2 How do I profile a query?。
EXPLAIN
MATCH (n:Peter {foo: 'Paul'})
SET n.foo = 'Mary', n.bar = 'Paul'
RETURN n.foo, ID(n)
------------------------------------------
// Nothing returned, query is not executed
相关的新功能也是新的“基于成本”的查询规划器,以及强制为所有查询或任何特定查询使用“基于成本”或“基于规则”的查询规划器的功能。该文档指出,并非所有查询都可以由“基于成本”的查询计划程序解决,在这种情况下,将忽略该设置并使用“基于规则”的计划程序。见15.1 How are queries executed?
要强制对所有查询使用任一查询规划器,请在query.planner.version
(Neo4j服务器)中设置conf/neo4j.properties
配置设置,或在{{1}上调用.setConfig()
方法object(Neo4j embedded)。将其设置为GraphDatabaseService
或COST
,并决定使用哪个查询规划器返回Neo4j,将其设置为RULE
(或完全删除设置)。请参阅24.5 Configuration Settings,Starting an embedded database with configuration settings。
要强制为特定查询使用任一查询规划器,请在default
或CYPHER planner=cost
前添加查询。见15.1 How are queries executed?
CYPHER planner=rule
您可以与任一查询规划人员进行CYPHER planner=cost
MATCH (n:Peter {foo: 'Paul'})
RETURN n.bar, ID(n)
或PROFILE
次查询,并查看他们如何实施查询的任何差异。
有关解释执行计划的帮助,请参阅文档的相关章节16. Execution Plans。