sophia
sophia copied to clipboard
Shrink logs
Дима, привет!
Уже год юзаем твой движок в https://github.com/recoilme/okdb - все прекрасно, но хотелось бы еще и место экономить чуть чуть если возможно. Когда база суммарно превышает примерно 70 гиг процедура упаковки начинает запускаться реже чтоли Вот примерно такие размеры: 13G db 126G log 138G total
самый старый лог - -rw-r--r-- 1 pudge pudge 489834960 Jan 5 16:47 00000000000000008652.log - 5 гиг
Если я верно понимаю в логах новые записи для кот еще не пришло время упаковки Нет ли возможности как то форсировать это процесс или каких то параметров для уменьшения количества лог файлов?

Привет! Очень приятно это слышать :)
Возможно вам стоит покрутить db.compaction.cache
. Переменная сейчас расчитывается из ожидаемого размера хранилища, скорости записи данных в базу и скорости диска. Можно взять типичное значение отсюда http://sophia.systems/v2.2/admin/memory_requirements.html
Можно самостоятельно включить compaction позвав функцию db.name.compaction.compact
, например так как это делается в тестах: https://github.com/pmwkaa/sophia/blob/master/test/compaction/compact.test.c#L46
@pmwkaa а в какую сторону крутить чтобы логи почаще компактились? )) Сейчас стоит 400мб, если я правильно выставил https://github.com/recoilme/okdb/blob/master/okdb.c#L939 Может быть вообще отключить лог, раз она не падает, или это не совсем то? http://sophia.systems/v2.2/conf/log.html
400 мб кажется очень мало, это будет вынуждать компактить постоянно и не эффективно с ростом базы. cache это размер памяти, которую мы можем выделить для хранилища. чем она выше, тем будет эффективнее работа в плане io. Типовой размер cache, расчитаный от макс. объема данных и скорости диска можно выбрать из этой таблички: можно выбрать http://sophia.systems/v2.2/admin/memory_requirements.html
Если отключить лог, тогда потеряются все данные, которые не успели скомпактится. Те база будет работать как in-memory хранилище больше. По простому сейчас решается компактится ли нода если 'размер данных в памяти ноды > cache / колво_нод'.
Я могу для вас вернуть checkpoint. Если его вызвать, он сможет все скомпактить все без условий.
Спасибо большое за ответы! Я правильно понял что сейчас если просто дергать функцию - db.name.compaction.compact - она не скомпактит всё если по время компактится еще не пришло? Если так, то checkpoint был бы идеальным решением в нашем случае
+1 за принудительный компакт
Года еще не прошло, но я добавил checkpoint :) https://github.com/pmwkaa/sophia/commit/2ecfe01fede4fa636254bac414d127d95d5afbca
Позвать можно вызвав db.name.compaction.checkpoint (как в тесте compaction/checkoint.test.c). db.name.scheduler.checkpoint скажет, что он активен в текущий момент.