Hazelcast:将索引添加到庞大的现有 IMap 中会产生什么影响?

Hazelcast: What would be the implications of adding indexes to huge existing IMaps?

假设有 4-5 个节点有很多 IMaps,里面有很多数据,一些谓词查询开始变得非常慢。解决此性能问题的解决方案之一(我认为)可能是添加索引。但是,此数据是目前正在生产中使用的合理系统的一部分。

在添加索引之前,我想知道在巨大的 IMaps 上这样做会产生什么后果? (它会锁定整个地图吗?;它会导致整个系统瘫痪吗?;等等)Hazelcast 文档包含有关如何操作的信息,但没有给出任何其他解释。

如果您想在运行时添加索引,将会发生以下情况:

  • AddIndexOperation 将在每个分区上执行
  • 在AddIndexOperation 执行期间,分区将被阻塞,直到所有分区数据被迭代并添加到索引。

在此时间范围内不会阻止查询 - 但 get/put 操作会。

我建议在负载最小的 "maintenance window" 进行。

lots of data 是相对的 - 只需在具有完全相同数据量的开发环境中执行测试,以查看在您的环境中添加索引需要多长时间。