11.8. 性能调优
11.8.1. 以 SYNC 模式进行批处理写入 复制链接链接已复制到粘贴板!
默认情况下,索引管理器 以同步模式工作,这意味着当数据被写入 Data Grid 时,它将同步执行索引操作。这个同步保证索引始终与数据一致(因此在搜索中可见),但可能会减慢写操作的速度,因为它也会执行对索引的提交。提交是 Lucene 中的非常昂贵的操作,因此,来自不同节点的多个写入可以自动批量到一个提交中,以减少影响。
因此,当将数据加载到启用了索引的 Data Grid 时,请尝试使用多个线程来利用这个批处理。
如果使用多个线程不会导致所需的性能,替代方案是加载带有临时禁用的索引的数据,并在 之后运行重新索引操作。这可以通过使用 SKIP_INDEXING 标志写入数据:
cache.getAdvancedCache().withFlags(Flag.SKIP_INDEXING).put("key","value");
cache.getAdvancedCache().withFlags(Flag.SKIP_INDEXING).put("key","value");
11.8.2. 使用 async 模式编写 复制链接链接已复制到粘贴板!
如果数据写入和数据在查询中可见时可以接受小的延迟,则索引管理器可以配置为以 async 模式 工作。async 模式提供更好的写入性能,因为在这个模式中以可配置的间隔进行。
配置:
11.8.3. 索引读取器 async 策略 复制链接链接已复制到粘贴板!
Lucene 在内部与索引的快照一起工作:一旦打开 ,它只会看到索引更改直到打开了点;在索引读取程序刷新前,进一步的索引更改将无法看到。默认情况下,Data Grid 中使用的索引管理器将在每次查询前检查索引读取器的最新性,并在需要时刷新它们。
IndexReader
通过将 reader.strategy 配置设置为 async,将这个策略重新排序此策略来放宽此新性检查到预先配置的间隔:
11.8.4. Lucene 选项 复制链接链接已复制到粘贴板!
可以在 Lucene 中直接应用调优选项。如需了解更多详细信息,请参阅 Hibernate 搜索手册。