7.2.5. 调优 Lucene 索引
7.2.5.1. 调优 Lucene 索引性能 复制链接链接已复制到粘贴板!
Hibernate Search 用于通过指定传递给底层 Lucene IndexWriter
(如 mergeFactor、
maxMergeDocs 和
的一组参数来调整 Lucene 索引性能。指定这些参数作为为所有索引应用、基于索引甚至每个分片的默认值。
maxBufferedDocs
)
有几个低级别 IndexWriter
设置可以针对不同的用例进行调整。这些参数按照 indexwriter
关键字分组:
hibernate.search.[default|<indexname>].indexwriter.<parameter_name>
hibernate.search.[default|<indexname>].indexwriter.<parameter_name>
如果没有在特定分片配置中为 索引写入器值
设置值,Hibernate Search 会检查 index 部分,然后在 default 部分。
下表中的配置将导致这些设置应用于 Animal 索引的第二个分片 :
-
max_merge_docs
= 10 -
merge_factor
= 20 -
ram_buffer_size
= 64MB -
term_index_interval
= Lucene default
所有其他值将使用 Lucene 中定义的默认值。
所有值的默认值都是保留为 Lucene 自己的默认值。索引性能和行为属性中列出的值取决于您使用的 Lucene 版本。显示的值相对于版本 2.4
。
以前版本的 Hibernate Search 具有 批处理
和 事务
属性的概念。情况已不再如此,因为后端始终使用相同的设置执行工作。
属性 | 描述 | 默认值 |
---|---|---|
|
当其他进程不需要写入同一索引时,设置为 |
|
|
每个索引都有一个单独的"pipeline",其中包含要应用到索引的更新。当此队列满时,向队列添加更多操作将变为阻止操作。除非 |
|
| 确定应用和清空缓冲区内删除术语前所需的最小删除术语数量。如果当时内存中有被缓冲的文档,则它们会被合并并创建新的网段。 | 禁用(按 RAM 使用情况清空) |
| 控制索引期间内存中缓冲的文档数量。消耗的 RAM 量越大。 | 禁用(按 RAM 使用情况清空) |
| 定义片段中允许的最大文件数。较小的值在经常更改索引时表现更好,如果索引不经常改变,更大的值可以提供更好的搜索性能。 | 无限(Integer.MAX_VALUE) |
| 控制片段合并频率和大小。 确定插入时段索引的合并频率。使用较小的值时,索引和搜索未优化索引时会使用较少的 RAM,但索引速度较慢。当值较大时,索引期间会使用更多的 RAM,而搜索未优化索引时速度较慢,索引速度也更快。因此,较大的值(> 10)最适合创建批处理索引,更适合以互动方式维护的索引的更小的值(< 10)。该值不能低于 2。 | 10 |
|
控制片段合并频率和大小。在下一个片段合并操作中始终考虑小于这个大小的片段(以 MB 为单位)。设置这个太大可能会导致合并操作昂贵,即使它们的频率较低。See also | 0 MB(实际为 ~1K) |
| 控制片段合并频率和大小。 大于这个大小的片段(以 MB 为单位)永远不会合并到更大的网段。 这有助于降低内存要求并避免以最佳搜索速度为代价进行一些合并操作。在优化索引时,这个值将被忽略。
See also | 无限 |
| 控制片段合并频率和大小。
即使优化索引,大于这个大小的片段(以 MB 为单位)也不会合并(请参阅
Applied to | 无限 |
| 控制片段合并频率和大小。
设置为
应用到 |
|
| 控制专用于文档缓冲区的 RAM 量(以 MB 为单位)。在一起使用 max_buffered_docs 时,会首先进行刷新(以此类事件为准)。 通常,为了提高索引性能,最好使用 RAM 刷新,而不是按文档计数进行清除,并使用尽可能大的 RAM 缓冲区。 | 16 MB |
| 设置索引术语之间的间隔。 较大的值会导致 IndexReader 使用的内存减少,但随机访问速度较慢。Small 值会导致 IndexReader 使用更多内存,并加快对术语的随机访问。详情请查看 Lucene 文档。 | 128 |
|
使用复合文件格式的优点是使用较少的文件描述符。缺点是索引需要更长的时间和临时磁盘空间。您可以在改进索引时间时将此参数设置为
布尔值参数,使用 | true |
| 并非所有实体更改都需要 Lucene 索引更新。如果没有索引所有更新的实体属性(脏属性),Hibernate Search 将跳过重新索引的过程。
如果您使用需要在每次更新事件中调用的自定义
此优化不应用于使用
布尔值参数,使用 | true |
黑色后端
不应在生产环境中使用,而是仅作为识别索引瓶颈的工具。