Как количество записей, определенных в построителе для сохраняемой карты ChronicleMap, влияет на его способность масштабироваться?

Каждому примеру карты хроник необходимо указать размер записей в построителе, но я не понимаю, как это значение влияет на сохраняемую карту:

 ChronicleMap
    .of(Long.class, Point.class)
    .averageValueSize(8)
    .valueMarshaller(PointSerializer.getInstance())
    .entries(999)
    .createOrRecoverPersistedTo(new File("my-map"));
  1. Что произойдет, если я вставлю в эту карту более 999 записей?
  2. Определяет ли это число количество записей, которые Хроника или карта памяти должны храниться в памяти для меня?

person trafalgar    schedule 28.01.2021    source источник


Ответы (1)


Если количество записей слишком маленькое, его придется изменить, что обойдётся с небольшими затратами, и оно не будет организовано так эффективно.

В общем, лучше увеличить размер карты, чтобы не волноваться по этому поводу. В системах Linux он использует разреженные файлы, поэтому вы можете даже не использовать больше места на диске.

person Peter Lawrey    schedule 29.01.2021
comment
Спасибо. Как на самом деле сохраняемая карта обеспечивает производительность? Это потому, что он записывает в файл с отображением памяти, и поэтому каждая запись на самом деле является записью в блок памяти, и ваши чтения выполняются быстро благодаря тому, что ОС выгружает наиболее часто используемые части файла? - person trafalgar; 29.01.2021
comment
@trafalgar Программное обеспечение записывает / читает собственную память, поэтому, пока оно находится в памяти, вы получаете скорость в памяти, однако ОС также будет считывать / сбрасывать грязные страницы, поэтому, даже если данные процесса не будут потеряны (если ОС умрет это может привести к потере данных) ТАКИМ ОБРАЗОМ, вы приблизитесь к скорости памяти для наборов данных, превышающих основную память, и постоянства, даже если процесс умрет. - person Peter Lawrey; 31.01.2021