Neo4j 4.x 中的索引

本节包含有关 Neo4j 不同版本中索引的必要信息。

索引会自动更新到最新的索引提供程序并重建。唯一的例外是那些之前使用 Lucene 处理单属性字符串的 3.5 索引。它们会升级到一个使用 Lucene 处理这些属性的备用版本,并且必须重建。有关创建、使用和删除 B-tree 索引的详细信息,请参阅 Cypher® Manual 4.0 → 索引以提升搜索性能

neo4j-admin copy 命令不会复制 schema 存储。因此,如果遵循 Neo4j 3.5(社区版或企业版)→ Neo4j 4.x 企业版的路径,您必须通过运行 neo4j-admin copy 操作输出的 Cypher 命令来重新创建所有索引和约束。有关如何执行此操作的更多信息,请参阅 教程:备份和复制数据库

索引提供程序变更

下表提供了索引提供程序映射的详细信息

3.5 中的索引提供程序 4.x 中的索引提供程序

native-btree-1.0

native-btree-1.0

lucene+native-2.0

native-btree-1.0

lucene+native-1.0

lucene+native-3.0

lucene-1.0

lucene+native-3.0

内存分配

根据之前使用的索引提供程序,索引升级可能会改变内存利用率的分布。在拥有大量索引的数据库中,L​​ucene 可能已保留了大量内存。因此,建议在迁移前后运行 neo4j-admin memrec --database,并根据发现调整内存设置。可能需要将为 Lucene 保留的部分内存重新分配给页面缓存。有关内存如何分配和使用的详细说明,请参阅 操作手册 → 内存配置,特别是 操作手册 4.0 → 容量规划

属性大小限制

在 3.5 和 4.x 之间,B-tree 索引中键(属性)的大小限制发生了一些变化。这些变化仅与 3.5 中使用索引提供程序 lucene-1.0lucene+native-1.0 并包含大字符串或大数组的索引有关。

表 1. 3.5 中索引提供程序的属性大小限制
索引和属性类型 lucene-1.0 lucene+native-1.0 lucene+native-2.0 native-btree-1.0

单属性字符串

约 32KB

约 32KB

约 4KB

约 4KB

单属性数组

约 32KB

约 32KB

约 4KB

约 4KB

多属性

每个属性约 32KB

每个属性约 32KB

组合属性约 4KB

组合属性约 4KB

表 2. 4.x 中索引提供程序的属性大小限制
索引和属性类型 lucene+native-3.0 native-btree-1.0

单属性字符串

约 32KB

约 8KB

单属性数组

约 8KB

约 8KB

多属性

组合属性约 8KB

组合属性约 8KB

在 4.x 中,没有办法索引大于约 8KB 的数组或多个属性。有关达到此属性大小限制时发生的情况的更多信息,请参阅 操作手册 4.0 → 键大小限制

显式索引

自 4.0 起,已删除对显式索引的支持,该功能已被全文索引取代。有关详细信息,请参阅 Cypher Manual 4.0 → 全文搜索支持索引

令牌查找索引

随着 Neo4j 4.3 的发布,引入了一种新的索引,即 令牌查找索引。此索引默认存在于 4.3 及更高版本中创建的所有数据库中,并且适用于节点标签和关系类型。有关更多信息,请参阅 操作手册 4.3 → 令牌查找索引

节点查找索引从标签扫描存储演变而来,后者长期以来以各种形式存在。将标签扫描存储转换为索引有许多优点,但必须注意,节点查找索引是可删除的,与标签扫描存储不同。

节点查找索引是数据库中最重要的索引,它极大地提高了 Cypher 查询、核心 API 操作以及其他索引填充的性能。删除此索引会导致大多数工作负载的性能严重下降。因此,在执行此操作之前,请仔细考虑其后果。

因此,任何列出并删除所有索引的索引清理脚本也包括节点查找索引,因此也应极其谨慎地使用。

© . All rights reserved.