Neo4j 4.x 中的索引
本节包含有关 Neo4j 不同版本中索引的必要信息。
索引会自动更新到最新的索引提供程序并重建。唯一的例外是那些之前使用 Lucene 处理单属性字符串的 3.5 索引。它们会升级到一个使用 Lucene 处理这些属性的备用版本,并且必须重建。有关创建、使用和删除 B-tree 索引的详细信息,请参阅 Cypher® Manual 4.0 → 索引以提升搜索性能。
|
索引提供程序变更
下表提供了索引提供程序映射的详细信息
3.5 中的索引提供程序 | 4.x 中的索引提供程序 |
---|---|
|
|
|
|
|
|
|
|
内存分配
根据之前使用的索引提供程序,索引升级可能会改变内存利用率的分布。在拥有大量索引的数据库中,Lucene 可能已保留了大量内存。因此,建议在迁移前后运行 neo4j-admin memrec --database
,并根据发现调整内存设置。可能需要将为 Lucene 保留的部分内存重新分配给页面缓存。有关内存如何分配和使用的详细说明,请参阅 操作手册 → 内存配置,特别是 操作手册 4.0 → 容量规划。
属性大小限制
在 3.5 和 4.x 之间,B-tree 索引中键(属性)的大小限制发生了一些变化。这些变化仅与 3.5 中使用索引提供程序 lucene-1.0
或 lucene+native-1.0
并包含大字符串或大数组的索引有关。
索引和属性类型 | 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 |
索引和属性类型 | 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 操作以及其他索引填充的性能。删除此索引会导致大多数工作负载的性能严重下降。因此,在执行此操作之前,请仔细考虑其后果。 因此,任何列出并删除所有索引的索引清理脚本也包括节点查找索引,因此也应极其谨慎地使用。 |