Neo4j 4.x 中的索引
本节包含有关不同版本的 Neo4j 中索引的必要信息。
索引会自动更新到最新的索引提供程序并重建。唯一的例外是以前使用 Lucene 的 3.5 索引,用于单属性字符串。它们将升级到使用 Lucene 的回退版本,用于这些属性,并且它们必须重建。有关创建、使用和删除 B 树索引的详细信息,请参阅 Cypher® 手册 4.0 → 用于搜索性能的索引。
|
索引提供程序更改
下表提供了有关索引提供程序映射的详细信息
3.5 中的索引提供程序 | 4.x 中的索引提供程序 |
---|---|
|
|
|
|
|
|
|
|
内存分配
根据以前使用的索引提供程序,索引升级可能会改变内存使用情况的分布。在具有许多索引的数据库中,可能为 Lucene 预留了大量的内存。因此,建议在迁移之前和之后运行 neo4j-admin memrec --database
,并根据结果调整内存设置。可能需要将为 Lucene 预留的内存分配回页面缓存。有关内存分配和使用方式的详细说明,请参阅 操作手册 → 内存配置 和 操作手册 4.0 → 容量规划,尤其如此。
属性大小限制
在 3.5 和 4.x 之间,B 树索引中键(属性)可以有多大方面做了一些更改。这些更改仅与在 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 手册 4.0 → 支持全文搜索的索引。
令牌查找索引
随着 Neo4j 4.3 的发布,引入了新的索引,即令牌查找索引。此索引默认存在于 4.3 及更高版本中创建的所有数据库中,并应用于节点标签和关系类型。有关更多信息,请参阅 操作手册 4.3 → 令牌查找索引。
节点查找索引从标签扫描存储演变而来,标签扫描存储在很长一段时间内以多种形式存在。将标签扫描存储转换为索引有很多优点,但需要注意的是,节点查找索引是可删除的,与标签扫描存储不同。
节点查找索引是数据库中最重要的索引,它极大地提高了 Cypher 查询、核心 API 操作以及其他索引填充的性能。删除此索引会导致大多数工作负载的性能严重下降。因此,在执行此操作之前,请仔细考虑后果。 因此,任何列出和删除所有索引的索引清理脚本也包括节点查找索引,因此应谨慎使用。 |