【问题标题】:Hazelcast: What would be the implications of adding indexes to huge existing IMaps?Hazelcast:向现有的庞大 IMap 添加索引会产生什么影响?
【发布时间】:2017-04-28 16:36:41
【问题描述】:
考虑到 4-5 个节点有很多 IMap,其中包含大量数据,一些谓词查询开始变得非常缓慢。解决这个性能问题的解决方案之一(我认为)可能是添加索引。然而,这些数据是目前在生产中使用的一个合理系统的一部分。
在添加索引之前,我想知道在巨大的 IMap 上这样做会产生什么后果? (它会锁定整个地图吗?;它会关闭整个系统吗?;等等。)Hazelcast 文档包含有关如何执行此操作的信息,但没有给出任何其他解释。
【问题讨论】:
标签:
performance
indexing
hazelcast
hazelcast-imap
【解决方案1】:
如果您想在运行时添加索引,将会发生以下情况:
- AddIndexOperation 将在每个分区上执行
- 在 AddIndexOperation 执行期间,分区将被阻塞,直到所有分区数据都被迭代并添加到索引中。
在此时间范围内不会阻止查询 - 但 get/put 操作会。
我建议您在负载最小的“维护窗口”中执行此操作。
lots of data 是相对的 - 只需在具有完全相同数据量的开发环境中执行测试,看看在您的环境中添加索引需要多长时间。