顶点删除问题

0

【以下的问题经过翻译处理】 你好,

我在 Neptune 中有 100 万+ 个顶点,其中各有一个属性:('__graph','db8db2af-8b0c-49fb-bcf1-c44cae2d2e95')。

我想清空数据库中的所有 100 万个顶点。我知道我必须分段删除顶点,否则查询会超时。每个分段将负责删除 1000 个顶点,通常需要约 2 秒钟。下面是分段查询的样子:

g.V().has('__graph','db8db2af-8b0c-49fb-bcf1-c44cae2d2e95').limit(1000).drop()

以下是执行操作两次后的分析结果:

gremlin> g.V().has('__graph','db8db2af-8b0c-49fb-bcf1-c44cae2d2e95').limit(1000).drop().profile() ==>Traversal Metrics Step Count Traversers Time (ms) % Dur

NeptuneGraphQueryStep(Vertex) 1 1 2020.007 99.99

NeptuneDropStep 0.101 0.01

TOTAL - - 2020.109 -


gremlin> g.V().has('__graph','db8db2af-8b0c-49fb-bcf1-c44cae2d2e95').limit(1000).drop().profile() ==>Traversal Metrics Step Count Traversers Time (ms) % Dur

NeptuneGraphQueryStep(Vertex) 1 1 57883.392 100.00

NeptuneDropStep 0.130 0.00

TOTAL - - 57883.522 -

为什么删除如此不一致?通常应该花费 2000 毫秒,但我们看到像第二个示例中的时间大幅波动。很多时候查询在 2 分钟后完全超时。

请提供帮助, 谢谢 Austin

profile picture
EXPERTE
gefragt vor 9 Monaten26 Aufrufe
1 Antwort
0

【以下的回答经过翻译处理】 你好 Austin,

对于每个你要删除的顶点,它们连接到的边的数量是否有所不同?当在 Neptune 中删除顶点时,连接的边也必须被删除。没有顶点的边是无法存在的。

我们有一个多线程删除的示例实现,可能会有所帮助。它是用 Python 编写的,但是你可以将其移植到任何支持一些线程/多进程库的语言中:https://github.com/awslabs/amazon-neptune-tools/blob/master/drop-graph/drop-graph.py

该示例的目的是删除整个图形,但是你可以将其扩展为仅删除图形的某个子集。为了让其性能优化,该示例首先获取并删除边,以避免在删除顶点时查询并删除边所带来的额外开销。

profile picture
EXPERTE
beantwortet vor 9 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen