我在Hazelcast节点中使用自己的MapStore实现。商店正在访问MSSQL数据库以进行加载。
即使我为JVM分配了不合理的大量内存,在加载整个keySet之后,一次似乎处理的平均次数也不超过6个。这样,初始加载过程缓慢得令人无法接受。
我现在正在使用的一种解决方法是,我已将MapStore设置为渴望而不是懒于加载,这样,数据将在需要时就已经可用。我希望存储是懒惰的,并且只在需要时才访问数据,但是凭借这种性能,准备就绪需要几分钟的时间。
是否有人知道如何为Hazelcast MapStore配置读取的块大小?我要说的是,2K密钥对于系统来说应该不是一件容易的事。
[cached13] DEBUG MyMapStoreImpl l:72 - LoadAllKeys loaded: 2427 keys
[cached4] DEBUG MyMapStoreImpl l:62 - loadAll() since begun: 1504 ms Curr.Keys: 6
[cached17] DEBUG MyMapStoreImpl l:62 - loadAll() Since begun: 1862 ms Curr.Keys: 5
[cached6] DEBUG MyMapStoreImpl l:62 - loadAll() since begun: 2436 ms Curr.Keys: 8
最佳答案
每个分区都调用loadAll
。由于Hazelcast默认具有271个分区,因此每个分区大约有9个键。因此,我认为这部分没有问题。预期在每次迭代中都有如此多的键。您可以观察到,如果您有更多数据,则每个呼叫的密钥大小将更大。
我谨建议您检查一下MSSQL查询性能,恕我直言,查询性能可能是瓶颈。
关于java - Hazelcast MapStore配置读取块大小,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32519199/