Indexing 理解Neo4j中的指数-为什么需要重新采样?

Indexing 理解Neo4j中的指数-为什么需要重新采样?,indexing,neo4j,Indexing,Neo4j,在下表中,我们看到: 控制必须更新的索引的百分比 在触发新的采样运行之前 “抽样”是什么意思?为什么更新会使索引失效?我知道索引来自关系数据库,在这种情况下,不需要维护索引(添加/删除行对应于在某些BTree中添加/删除节点) 有人知道为什么Neo4j中的索引需要重新采样吗?索引总是有效的 定期采样生成Cypher execution planner使用的统计信息,以便生成针对数据库当前状态更为优化的计划 引用(比您问题中的表格稍早一点): 当发出密码查询时,它将被编译为执行计划 可以运行并回

在下表中,我们看到:

控制必须更新的索引的百分比 在触发新的采样运行之前

“抽样”是什么意思?为什么更新会使索引失效?我知道索引来自关系数据库,在这种情况下,不需要维护索引(添加/删除行对应于在某些BTree中添加/删除节点)


有人知道为什么Neo4j中的索引需要重新采样吗?

索引总是有效的

定期采样生成Cypher execution planner使用的统计信息,以便生成针对数据库当前状态更为优化的计划

引用(比您问题中的表格稍早一点):

当发出密码查询时,它将被编译为执行计划 可以运行并回答查询的。密码查询引擎使用 有关数据库的可用信息,如架构信息 关于数据库中存在哪些索引和约束。Neo4j也是 使用有关数据库的统计信息来优化 执行计划


这是正确的。为了说明一点,在匹配查询中考虑是否可以通过索引查找来获得多个节点作为起始点。规划者使用这些采样的统计信息来确定哪种方法可能更好(一个节点、另一个节点或两者都使用并进行哈希联接),此外,在某些情况下,规划者可以使用不同的索引在同一节点上执行查找,并且需要知道哪种方法可能更具选择性。