Chronicle Queue: blockSize, количество индексов и руководство по размеру

Интерфейс ChronicleQueueBuilder (4.5) позволяет параметризовать характеристики файла очереди. По умолчанию я получаю файлы размером 80 МБ для ежедневного обновления.

  • Есть ли какие-либо рекомендации, как следует использовать эти значения?
  • Каковы компромиссы? Могу ли я оптимизировать его, чтобы приложение могло быстро искать индекс?
  • Если я знаю свой средний размер выдержки и среднее количество выдержек за период, могу ли я выбрать эти значения, чтобы избежать изменения размера файла очереди в течение дня?

person vasquez    schedule 06.03.2017    source источник
comment
Я предлагаю использовать 5.17.x, так как он совместим с Java 11.   -  person Peter Lawrey    schedule 18.12.2018


Ответы (1)


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

Вы можете увеличить размер фрагмента до 1 ГБ или более, однако, если вас беспокоит стоимость изменения размера, я предлагаю периодически вызывать pretoucher() в другом потоке, чтобы всегда был запас.

person Peter Lawrey    schedule 29.03.2017
comment
Как изменить размер блока со значения по умолчанию не более 16 МБ на значение выше, чем в коде? Любая помощь приветствуется - person Anirudh Kashyap; 18.12.2018
comment
@AnirudhKashyap По умолчанию установлено значение 64 МБ, вы можете вызвать ChronicleQueueBuilder.blockSize(128 << 20), например, чтобы изменить его на 128 МБ. - person Peter Lawrey; 18.12.2018
comment
Может быть, я запутался с размером блока и размером куска. Я вижу это на странице часто задаваемых вопросов. Я хочу хранить большие сообщения; каков предел? Ограничение составляет около 1 ГБ, начиная с Chronicle 4.x. Практический предел без настройки конфигурации составляет около 16 МБ. На этом этапе вы получаете значительную неэффективность, если не увеличиваете размер блока распределения данных. Что это за 16 МБ, о которых мы говорим? - person Anirudh Kashyap; 18.12.2018
comment
Кроме того, будет ли какое-либо влияние на производительность, если я изменю это значение на 1 ГБ, что, как я полагаю, является максимальным значением, которое можно было бы установить? - person Anirudh Kashyap; 19.12.2018
comment
@AnirudhKashyap в последних версиях вы можете установить размер на много ГБ. Главный недостаток; вы не можете использовать 4 ГБ или более в Windows, но вы можете в Linux и сколько видимого пространства вы тратите впустую, хотя в Linux память и диск распределяются лениво. - person Peter Lawrey; 19.12.2018
comment
Спасибо, Питер. Не могли бы вы также пролить свет на размер фрагмента и размер блока, и скажем, я указываю размер своего блока равным 100 МБ, я читал, что максимальный размер для записи не должен превышать 25 МБ. Почему это так ? - person Anirudh Kashyap; 19.12.2018
comment
@AnirudhKashyap Куски выделяются с перекрывающимися областями. Это перекрытие составляет 25% от размера блока. Если вы начнете писать ближе к концу чанка, вы сможете написать только 25% за один раз. С большим количеством небольших записей вы можете написать больше куска, но 25% всегда безопасно. - person Peter Lawrey; 19.12.2018
comment
Кроме того, в случае, когда я могу писать сообщения разного размера, какой лучший размер блока необходимо установить? поставить на макс? - person Anirudh Kashyap; 20.12.2018
comment
Это будет мой последний вопрос. В моем приведенном выше примере с размером блока 100 МБ и размером перекрытия 25 МБ будет ли блок размером 100 МБ, выделенный вне кучи, и мы будем продолжать записывать фрагменты размером не более 25 МБ в этом блоке? - person Anirudh Kashyap; 20.12.2018
comment
Первый выделенный блок занимает 125% размера чанка. например по умолчанию 64 МБ, но файл начинается с 80 МБ. Каждый раз он увеличивается на 64 МБ. - person Peter Lawrey; 20.12.2018
comment
Большое спасибо, Питер, это помогает. - person Anirudh Kashyap; 20.12.2018