Neo4j知识库(一):大型删除事务最佳实践

【翻译自:https://neo4j.com/developer/kb/large-delete-transaction-best-practices-in-neo4j/ 】
【由Neo4j APAC授权编译发布】

Neo4j知识库

        在处理大型删除操作时,为了获得最佳性能,避免对系统产生负面影响,请参考本文的最佳实践。
        首先确定您的需求:
        1)如果想重新创建,则删除整个图数据库;
        2)删除图中的很大一部分,或者删除MATCH语句查询的大量节点/关系;
        根据具体情况,我们会有不同的建议。
        目前,删除整个图数据库的最佳方法是先停止数据库,重命名或者删除图存储目录(data/graph.db(v3.x前版本)或data/databases/graph.db(V3.x后版本)),然后启动数据库,系统将新建空的数据库。
        如果您想从图中删除大量对象,请注意创建的单个事务不要过大,避免遇到Java堆溢出错误。参考以下示例,以批量方式删除匹配记录的子集,直到完全删除为止:
        V3.x以后版本使用APOC方式:

call apoc.periodic.iterate("MATCH (n:Foo) where n.foo='bar' return n", "DETACH DELETE n", {batchSize:10000})
yield batches, total return batches, total

        V3.x以前版本:

// 查询您要删除的节点
MATCH (n:Foo) where n.foo = 'bar'

// 获取10K的节点和关系 (如果每个平均超过100节点/关系,则降低此数)
WITH n LIMIT 10000
DETACH DELETE n
RETURN count(*);

        执行此查询,直到语句返回0(零)记录。
        对于Neo4j 2.3之前的版本,请运行:

// 查询您要删除的节点
MATCH (n:Foo) where n.foo = 'bar'

// 获取10K的节点和关系 (如果每个平均超过100节点/关系,则降低此数)
WITH n LIMIT 10000
MATCH (n)-[r]-()
DELETE n,r
RETURN count(*);

        在所有示例中,我们都将批量删除10k。如果符合删除条件的节点有大量的关系,这可能仍会导致堆溢出错误。例如,如果要删除的节点为一百万个 :FOLLOWS 关系,则此节点将执行删除此节点及其一百万个  :FOLLOWS 关系。
        另外, 知识库文档 删除密集节点时如何避免使用过多内存https://neo4j.com/developer/kb/how-to-bulk-delete-dense-nodes/】也提到相关问题。
        假如您想要删除一批节点(根据规则还需要删除它们之间的关系),执行 DETACH DELETE 完成该操作非常方便。但是,如果节点密集,或者每批中有大量节点有成千上万的关系,该操作会有问题,“batch size” 很快会超出您的预期。
        APOC允许我们按下面的方式执行。事实上,我们想要找到要删除的节点集,并将其传递给 apoc.periodic.commit ,按照前10K关系,然后下一10K的关系对删除进行批处理,以此类推,直到完成。下面的Cypher语句查询节点的 ttl 属性在当前时间之前并且标签为 :TTL 的节点集,传给periodic commit执行,批量删除10K,此语句在大量节点集上运行良好。

MATCH (n:TTL)
WHERE n.ttl < timestamp()
WITH collect(n) AS nn
CALL apoc.periodic.commit(" 
UNWIND $nodes AS n
WITH sum(size((n)--())) AS count_remaining, collect(n) AS nn
UNWIND nn AS n
OPTIONAL MATCH (n)-[r]-()
WITH n, r, count_remaining
LIMIT $limit
DELETE r
RETURN count_remaining
", {limit:10000, nodes:nn}) yield updates, executions, runtime, batches, failedBatches, batchErrors, failedCommits, commitErrors
UNWIND nn AS n
DELETE n
RETURN updates, executions, runtime, batches

更多技术咨询:
Email:yusonglin@we-yun.com

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 161,780评论 4 369
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,424评论 1 305
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 111,397评论 0 254
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,576评论 0 218
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,997评论 3 295
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,945评论 1 224
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,107评论 2 317
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,850评论 0 208
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,625评论 1 250
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,804评论 2 253
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,285评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,613评论 3 261
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,291评论 3 242
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,164评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,963评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,096评论 2 285
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,886评论 2 278

推荐阅读更多精彩内容

  • 1. 概述 本学习总结报告是对最近在本科课程设计电商知识图谱中使用到的图数据库Neo4j的总结,旨在对Neo4j的...
    萍小伍阅读 1,658评论 0 0
  • 一、图数据库的基本介绍 什么是图形数据库图形数据库(Graph Database)是NoSQL数据库家族中特殊的存...
    SlashBoyMr_wang阅读 707评论 0 1
  • Neo4j是: ·一个开源 ·无Schema ·没有SQL ·图形数据库 该篇文章主要内容包括: 1.Neo4jC...
    布口袋_天晴了阅读 4,080评论 0 2
  • Neo4j简介 Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入...
    就天边阅读 29,403评论 3 6
  • 这个问题,要追述到以前的一次爬虫。以前需要做一个需求,就是去爬天眼查的企业信息。当时有这么一个需求人物关系图,那时...
    茶艺瑶阅读 2,420评论 0 0