有什么方法可以在neo4j中为多个查询执行我的基准测试?
假设我已经加载了我的图表,我想在数据库中启动10000个不同的最短路径查询,而不将数据加载到客户端。有没有办法可以批量执行此操作并获得执行时间?
答案 0 :(得分:3)
尝试使用neo4j-shell中的profile keyword。这将为您提供有关查询执行速度和查询速度的基本事实。
这是一个简单的例子:
neo4j-sh (?)$ CREATE (a {label:"foo"})-[:bar]->(b {label: "bar"})-[:bar]->(c {label: "baz"});
+-------------------+
| No data returned. |
+-------------------+
Nodes created: 3
Relationships created: 2
Properties set: 3
1180 ms
neo4j-sh (?)$ profile match (a {label: "foo"}), (c {label: "baz"}), p=shortestPath(a-[*]-c) return p;
+--------------------------------------------------------------------------------------+
| p |
+--------------------------------------------------------------------------------------+
| [Node[0]{label:"foo"},:bar[0]{},Node[1]{label:"bar"},:bar[1]{},Node[2]{label:"baz"}] |
+--------------------------------------------------------------------------------------+
1 row
ColumnFilter
|
+ShortestPath
|
+Filter(0)
|
+AllNodes(0)
|
+Filter(1)
|
+AllNodes(1)
+--------------+------+--------+-------------+-----------------------------------------+
| Operator | Rows | DbHits | Identifiers | Other |
+--------------+------+--------+-------------+-----------------------------------------+
| ColumnFilter | 1 | 0 | | keep columns p |
| ShortestPath | 1 | 0 | p | |
| Filter(0) | 1 | 6 | | Property(c,label(0)) == { AUTOSTRING1} |
| AllNodes(0) | 3 | 4 | c, c | |
| Filter(1) | 1 | 6 | | Property(a,label(0)) == { AUTOSTRING0} |
| AllNodes(1) | 3 | 4 | a, a | |
+--------------+------+--------+-------------+-----------------------------------------+
This other answer表示您通常会寻找较低DbHits
值来表示更好的效果,因为这些价格昂贵。
答案 1 :(得分:3)
WebAdmin工具(通常位于http://localhost:7474/webadmin/
用于本地neo4j安装),有Data browser
和Console
个标签,可让您输入查询,查看结果,还可以查看执行查询所花费的实际时间。
有趣的是,通过对Data browser
和Console
标签的有限测试,后者似乎报告了相同查询的查询时间更快。因此,控制台可能具有较少的开销,可能使其时序结果更准确。