我了解 Neo4j 社区版不提供转储。测量底层 Neo4j 数据库大小的最佳方法是什么?做 du 会提供一个好的估计吗?
谢谢你。
你是什么意思:
Neo4j 社区版不提供转储
企业版也不提供类似的东西。您是否正在寻找关于原始磁盘或节点/关系计数方面的数据库大小的统计信息?
如果磁盘:du -sh
在 linux 上使用,或在 Windows 上检查文件夹。
如果节点/关系:您必须编写 Java 代码来实际评估真实大小,因为 Web 控制台上的计数并不总是正确的。您还可以通过获取磁盘上的纯大小并除以 9(节点存储)和 33(关系存储)来进行基本计数。
Java 代码如下所示:
long relationshipCounter = 0;
long nodeCounter = 0;
GlobalGraphOperations ggo = GlobalGraphOperations.at(db);
for (Node n : ggo.getAllNodes()) {
nodeCounter++;
try {
for (Relationship relationship : n.getRelationships()) {
relationshipCounter++;
}
} catch (Exception e) {
logger.error("Error with node: {}", n, e);
}
}
System.out.println("Number of Relationships: " + relationshipCounter);
System.out.println("Number of Nodes: " + nodeCounter);
Web 控制台并不总是正确的原因是它会检查文件的最高值,并且 Neo4j 使用节点的删除标记,因此可能存在一系列“已删除”节点,这些节点的总数会增加可用的。最终 neo4j 将压缩并删除这些节点,但它们不会实时执行。
文件大小可能存在的原因与上述相同。唯一真正的方法是遍历所有节点和关系以检查“isActive”标记。
以字节为单位查看数据库大小的一些方法:
du -sh {$NEO4J_HOME}/data/graph.db
从仪表板:
http://localhost:7474/webadmin/
并查看“数据库磁盘使用情况”指示器。
仪表板中的“服务器信息”:
http://localhost:7474/webadmin/#/info/org.neo4j/Store%20file%20sizes/
并查看“TotalStoreSize”行。
最后是数据库抽屉;一直向下滚动并查看“数据库”部分。
您可以使用 Cypher 获取节点数:
MATCH ()
RETURN COUNT(*) AS node_count;
和关系的数量:
MATCH ()-->()
RETURN COUNT(*) AS rel_count;