Skip to main content

Размер базы InfluxDB при длительной записи

· 2 min read
dmn
maintainer

Замер: CM4 (RK3566), telegraf 1.28 → InfluxDB 2.7, датчик DL-303 по Modbus TCP, 5 значений (CO, CO2, влажность, температура, точка росы), опрос раз в 1 с, 23–25.10.2026.

Вывод​

База не распухает. За счёт сжатия один опрос (5 значений) занимает ≈1.8 байта. Год непрерывной записи раз в секунду — ≈60 MB.

Измерено​

СуткиОпросовФайл на дискеНа опрос
23.1033 19662.7 KB1.9 B
24.1073 004133.6 KB1.8 B

Без сжатия это было бы ~16 байт на значение, т.е. в ≈40 раз больше.

Прогноз (опрос раз в 1 с, 5 значений)​

ПериодОпросовРазмер
сутки86 400≈ 160 KB
месяц2.6 млн≈ 5 MB
90 дней7.8 млн≈ 14 MB
год31.5 млн≈ 58 MB

К этому добавляется журнал текущих суток (до ~4 MB, сжимается каждую ночь) и служебные файлы (~0.3 MB). Без сжатия год занял бы ~2.5 GB.

Почему так мало​

  • Время идёт ровно через 1 с — хранится как «шаг 1 с × N», почти 0 байт на метку.
  • Показания — целые числа, меняются медленно и часто повторяются: хранится только разница (0, ±1…), десятки разниц упаковываются в одно 8-байтовое слово, повторы — как «то же значение × N».

Когда будет больше​

  • Значения сильно «шумят» или дробные (float с меняющимися знаками) — сжатие хуже, но реалистично десятки, а не сотни MB в год.
  • Больше датчиков/полей — размер растёт пропорционально.
  • Сейчас у бакета хранение 90 дней — база сама держится на уровне ~15–18 MB. Чтобы хранить год, срок хранения бакета нужно увеличить.

Примечание​

du --apparent-size показывает ~34 MB даже для пустой базы: InfluxDB заранее резервирует файлы индекса (8 × 4 MB). Реально на диске они почти ничего не занимают — смотреть надо du без --apparent-size.