大量数据下 BTREE 索引的属性更新问题
发布于 2 年前 作者 frank-zsy 300 次浏览 来自 问答

目前数据库中大约有 4000W 节点,其中某个属性值 prop 上存在一个 BTREE 索引,有些节点存在 prop 属性,有些没有,存在的话是一个浮点数类型。

那么如果我批量更新例如 1000W 个节点的 prop 属性时,由于 Neo4j 的索引是实时自动更新的,那是否会导致触发索引不断更新而使得属性更新速度变慢呢?

在这种情况下,我是否应该先 DROP 掉 prop 属性上的索引,等更新结束后再重建这个索引是否会更快一些?

在官网上没有看到类似的说明,所以想请问一下。

2 回复

创建了索引,插入数据会更慢

删掉索引,插入数据快点,但你再创建索引还是要很长时间

理解,但由于大规模更新时,Neo4j 底层索引是自动更新的,我更新属性时使用了 period.iterate 使得更新是分批次的,我比较担心的是可能每 batch 更新后都会导致索引重算,从而使得更新被阻塞。由于更新并不频繁,感觉最佳实践确实应该是删掉索引-更新数据-重建索引。

回到顶部