知识库

如何生成节点、关系和属性的统计信息清单

使用以下 Cypher

MATCH (n) WHERE rand() <= 0.1
WITH labels(n) as labels, size(keys(n)) as props, size((n)--()) as degree
RETURN
DISTINCT labels,
count(*) AS NumofNodes,
avg(props) AS AvgNumOfPropPerNode,
min(props) AS MinNumPropPerNode,
max(props) AS MaxNumPropPerNode,
avg(degree) AS AvgNumOfRelationships,
min(degree) AS MinNumOfRelationships,
max(degree) AS MaxNumOfRelationships

将生成图中节点的“清单”,以及与每个标签的节点数量、平均属性数量、最小属性数量、最大属性数量、平均关系数量、最小关系数量和最大关系数量相关的统计信息。此 Cypher 可用于帮助理解数据库的性能和/或增长情况。

上述 Cypher 确实执行了整个图遍历,然后通过包含“rand()⇐ 0.1”的方式“采样”了 90% 的节点。因此,返回的数字实际上是图的 10% 采样。

在 Neo4j 3.0 中,上述查询作为浏览器中的收藏夹包含在内,并在“数据分析/存在哪些类型的节点”下定义。