diff --git a/README.md b/README.md index 0f37a37..b71c0b5 100644 --- a/README.md +++ b/README.md @@ -251,8 +251,8 @@ | старше года | удаляется | В каждом интервале остаётся реальная последняя точка — точки не усредняются, -только прореживаются. Фоновая петля прогоняет разряжение при старте панели и -далее каждые 15 минут. +только прореживаются. Первый проход панель делает при старте (до разового +`VACUUM`, см. ниже), дальше фоновая петля прогоняет разряжение каждые 15 минут. Чтобы прореживание не съедало крайности, вместе с выжившей точкой сохраняется **дайджест интервала** (`metrics.agg_json`) — только там, где точки реально @@ -300,9 +300,17 @@ чистит состояние каскадом. Чтобы удалённые точки возвращали место самому файлу, БД работает с -`auto_vacuum=INCREMENTAL`; на БД, созданных до этой настройки, панель при -первом старте один раз прогоняет `VACUUM` (в логе — `database compacted once`) -и далее возвращает страницы инкрементально. +`auto_vacuum=INCREMENTAL`. Сам по себе он файл почти не сжимает: +`incremental_vacuum` отдаёт по одной странице за вызов (замерено: 50 вызовов — +50 страниц, 200 КБ), поэтому распухший файл перестраивается разовым `VACUUM` — +при старте, уже ПОСЛЕ первого прохода разряжения (в логе `metrics retention: +удалено …`, затем `database compacted once (…)`). Признак — состояние файла: +режим `auto_vacuum` ещё не включён либо свободные страницы занимают больше +четверти файла; у здоровой БД страницы переиспользуются, и доля свободных +держится около нуля. На жирной БД (330 МБ, две недели истории по 5 КБ на +точку) старт удаляет 33 247 строк, схлопывает 4 202 бакета и сжимает файл до +58 МБ. Если места на диске не хватает (VACUUM пишет копию БД), панель стартует +как есть и пишет причину в лог. ## Конфигурация panel (env)