Политики сжатия и хранения
Сжимайте старые сегменты с помощью колоночного сжатия TimescaleDB и автоматически удаляйте просроченные сегменты
«Политики сжатия и хранения» — бесплатный урок SQL Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения SQL Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс SQL Academy содержит 4 уроков всего.
Зачем нужно сжатие?
Данные временных рядов хорошо поддаются сжатию. TimescaleDB сжимает чанки в столбцовом формате и часто достигает коэффициента сжатия 10–20×.
Сжатие гипертаблицы
Настройте, какие столбцы использовать для сегментации и упорядочивания сжатых данных:
ALTER TABLE metrics SET (
timescaledb.compress,
timescaledb.compress_segmentby = 'device_id',
timescaledb.compress_orderby = 'ts DESC'
);Политика сжатия
Автоматизируйте сжатие старых чанков:
SELECT add_compression_policy('metrics', INTERVAL '7 days');
-- Chunks older than 7 days get compressed automatically.Производительность запросов к сжатым данным
Чтение сжатых чанков остаётся быстрым: TimescaleDB передаёт фильтры на уровень столбцового хранилища. Запись и обновление сжатых чанков ограничены (в основном поддерживается только добавление данных).
Политика хранения
Удаляйте данные старше N интервалов — быстро с помощью удаления чанка, а не медленно с помощью DELETE:
SELECT add_retention_policy('metrics', INTERVAL '90 days');
-- Chunks older than 90 days are dropped automatically.Операции с чанками вручную
Просматривайте чанки:
SELECT * FROM chunks_detailed_size('metrics');
SELECT show_chunks('metrics', older_than => INTERVAL '90 days');
SELECT drop_chunks('metrics', older_than => INTERVAL '90 days');Распределение по уровням хранения
Перемещайте старые чанки на медленный диск, изменяя табличное пространство для каждого чанка. В сочетании со сжатием это позволяет недорого хранить данные за несколько лет.
Коэффициенты сжатия на практике
Типичные коэффициенты для данных датчиков:
- Числовые показатели: экономия места 90–95% и более
- Категориальные данные: 70–80%
- Строки и JSON: зависит от содержимого
Распаковка для обновления
Вы можете распаковать чанк, обновить старые данные, а затем снова сжать его:
SELECT decompress_chunk(c) FROM show_chunks('metrics', newer_than => INTERVAL '60 days') c;
-- Update / fix
SELECT compress_chunk(c) FROM show_chunks('metrics', newer_than => INTERVAL '60 days') c;Эквиваленты в обычном PostgreSQL
Без TimescaleDB вы можете самостоятельно реализовать аналогичную схему с помощью секционирования:
DROP TABLE events_2022; -- retention (fast)
-- No native columnar compression in vanilla Postgres for time-series.Сочетание с непрерывными агрегатами
Распространённый шаблон: хранить необработанные данные за 30 дней, почасовые агрегаты за 1 год, а ежедневные агрегаты — бессрочно. Для каждого уровня задайте подходящие сжатие или срок хранения.
Мониторинг
Отслеживайте сжатый размер и коэффициент сжатия:
SELECT * FROM hypertable_compression_stats('metrics');Итоги
Сочетание сжатия и хранения превращает PostgreSQL в полноценное хранилище данных временных рядов.
- Сжимайте старые чанки в 10–20 раз
- Политика хранения мгновенно удаляет чанки
- Распределяйте необработанные, почасовые и ежедневные данные по уровням с разными сроками хранения
- При необходимости распаковывайте данные для дозаполнения
Быстрая проверка
Вы хотите хранить необработанные показатели за 7 дней и автоматически удалять всё более старое. Как это сделать в TimescaleDB?
Часто задаваемые вопросы
Урок «Политики сжатия и хранения» бесплатный?
Да — полный текст урока «Политики сжатия и хранения» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс SQL Academy, подпишись на CoddyKit PRO. Курс SQL Academy содержит 4 уроков всего.
Чему я научусь в уроке «Политики сжатия и хранения»?
Сжимайте старые сегменты с помощью колоночного сжатия TimescaleDB и автоматически удаляйте просроченные сегменты Ты практикуешь SQL Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать SQL Academy?
Предыдущий опыт не требуется. SQL Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Политики сжатия и хранения»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке SQL Academy?
Да. Каждый урок SQL Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Гипертаблицы TimescaleDB
- Непрерывные агрегаты
- Политики сжатия и хранения
- Выбор индексов для временных рядов