0
我們如何強制所有值在啓動時加載,並且這是通過單個數據庫調用完成的?配置一個急切加載的maploader似乎並沒有這樣做?相反,單個值被加載,這意味着很多往返數據庫。Hazelcast MapLoader性能 - 強制從數據庫加載所有值
的MapLoader實現片斷如下:
public V load(K key) {
// issues a SQL query
return databaseService.findByPrimaryKey(key);
}
配置是這樣的: mapStoreCfg.setImplementation(裝載機)
.setInitialLoadMode(MapStoreConfig.InitialLoadMode.EAGER)
您正在使用什麼版本的Hazelcast? 它的設計工作原理是這樣的:一個羣集成員加載所有密鑰,然後將其分發給羣集成員。它批量加載值,我認爲批量大小設置爲1,000。 –
使用3.8.1。好的,但對數據庫來說性能很差。我們實際需要做的只是一個SELECT *語句來獲取所有行? – hklf
'SELECT * statement'不是很好,因爲它會迫使Hazelcast做出這樣的選擇: 1.由單個成員加載所有鍵值對並將它們分發給其他成員。這個成員將成爲一個瓶頸。 2.所有成員都可以得到'select * statement'。但是這可能會給DB帶來不必要的負載。因爲所有成員都會從數據庫中獲取所有密鑰。 –