0Pricing
SQL Academy · Урок

Политики сжатия и хранения

Сжимайте старые сегменты с помощью колоночного сжатия 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 — локальная установка не требуется.

Все уроки этого курса

  1. Гипертаблицы TimescaleDB
  2. Непрерывные агрегаты
  3. Политики сжатия и хранения
  4. Выбор индексов для временных рядов
← Назад к SQL Academy