有没有办法显示密码执行计划?

时间:2013-12-17 07:48:32

标签: neo4j cypher

我看过一个主题(Understanding Neo4j Cypher Profile keyword and execution plan),其中提到了个人资料关键字。

我无法在Neo4j 2.0.0RC1社区中使用它。

彼得写道,它没有完全实现。

它会得到支持吗?

我的意思是,在我们调整查询时,观察计划的变化会很有趣......

2 个答案:

答案 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

Cypher 2.2 profile

此外,您现在可以检查查询计划而无需实际执行它,例如验证将更改数据库的查询。使用查询前面的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

Cypher 2.2 explain

相关的新功能也是新的“基于成本”的查询规划器,以及强制为所有查询或任何特定查询使用“基于成本”或“基于规则”的查询规划器的功能。该文档指出,并非所有查询都可以由“基于成本”的查询计划程序解决,在这种情况下,将忽略该设置并使用“基于规则”的计划程序。见15.1 How are queries executed?

要强制对所有查询使用任一查询规划器,请在query.planner.version(Neo4j服务器)中设置conf/neo4j.properties配置设置,或在{{1}上调用.setConfig()方法object(Neo4j embedded)。将其设置为GraphDatabaseServiceCOST,并决定使用哪个查询规划器返回Neo4j,将其设置为RULE(或完全删除设置)。请参阅24.5 Configuration SettingsStarting an embedded database with configuration settings

要强制为特定查询使用任一查询规划器,请在defaultCYPHER 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