neo4j - 删除某种类型的所有边
问题描述
我有一个 neo4j 数据库,它有近 500 万个节点和 1200 万条边。我想删除边缘(关系)的类型(UsedAt)。有近 300 万条"UsedAt"类型的边。
我正在写一个查询
match ()-[e:UsedAt]->() delete e
这需要太多时间。永不停止。
我也试过
CALL apoc.periodic.iterate("match ()-[e:UsedAt]->() return e", "delete e", {batchSize:1000, parallel:true})
那也永远不会停止。如何在相对较大的数据库上有效地删除某种类型的所有边(关系)?
解决方案
这不是您如何编写查询的问题,而是neo4j 的结构问题。简而言之,无论您如何编写查询,都无法像您期望的那样高效地删除边缘。这是因为: 1)在 Neo4j 中,您的数据量很大。从本质上讲,neo4j 确保了每个操作的事务。2)从磁盘或内存中有很多随机读写,而且都不是很快。所以如果你坚持neo4j,你最好避免这样的操作。
推荐阅读
- python - discord.py 针对不同的检查失败引发不同的错误
- sql - 我的“删除设置默认值”有什么问题?
- python - Django:在模型中创建一个特定于用户的值
- php - 我想在 php 上包含来自网络的代码。示例:需要“domain.com/folder/file.php”;
- javascript - 您可以使用 Crossfilter 在组内过滤吗
- google-apps-script - Google App Script My Project 中的多个文件
- python - Python温度转换器中请求的错误处理帮助
- python - 从“外部”目录导入模块 [Python]
- python - 来自初学者的简单 DataFrame 问题
- vue.js - Vue:导入 JSON 请求加载器