0Pricing
SQL Academy · Lekcja

Zasady kompresji i retencji

Kompresować stare fragmenty za pomocą kolumnowej kompresji TimescaleDB i automatycznie usuwać fragmenty, których okres retencji upłynął

Zasady kompresji i retencji to bezpłatna lekcja SQL Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej SQL Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs SQL Academy zawiera 4 lekcji w sumie.

Dlaczego kompresować?

Dane szeregów czasowych dobrze poddają się kompresji. TimescaleDB kompresuje chunki w formie kolumnowej, często osiągając współczynnik kompresji 10–20×.

Kompresowanie hypertable

Należy skonfigurować, które kolumny będą używane do segmentacji i porządkowania skompresowanych danych:

ALTER TABLE metrics SET (
  timescaledb.compress,
  timescaledb.compress_segmentby = 'device_id',
  timescaledb.compress_orderby = 'ts DESC'
);

Zasada kompresji

Automatyzacja kompresji starych chunków:

SELECT add_compression_policy('metrics', INTERVAL '7 days');
-- Chunks older than 7 days get compressed automatically.

Wydajność zapytań na skompresowanych danych

Odczyty ze skompresowanych chunków nadal są szybkie — TimescaleDB przekazuje filtry bezpośrednio do magazynu kolumnowego. Zapisy i aktualizacje skompresowanych chunków są ograniczone (dane są głównie tylko dopisywane).

Zasada przechowywania danych

Usuwanie danych starszych niż N przedziałów — szybko (usunięcie chunka) zamiast wolno (DELETE):

SELECT add_retention_policy('metrics', INTERVAL '90 days');
-- Chunks older than 90 days are dropped automatically.

Ręczne operacje na chunkach

Przeglądanie chunków:

SELECT * FROM chunks_detailed_size('metrics');
SELECT show_chunks('metrics', older_than => INTERVAL '90 days');
SELECT drop_chunks('metrics', older_than => INTERVAL '90 days');

Warstwowanie pamięci masowej

Przenoszenie starych chunków na wolny dysk przez zmianę tablespace dla każdego chunka. W połączeniu z kompresją pozwala przechowywać dane z wielu lat przy niskim koszcie.

Współczynniki kompresji w praktyce

Typowe współczynniki dla danych z czujników:

  • Metryki liczbowe: oszczędność miejsca co najmniej 90–95%
  • Dane kategorialne: 70–80%
  • Łańcuchy znaków/JSON: zależnie od zawartości

Dekompresowanie na potrzeby aktualizacji

Można zdekompresować chunk, zaktualizować stare dane, a następnie ponownie go skompresować:

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;

Odpowiedniki w standardowym PostgreSQL

Bez TimescaleDB można samodzielnie zbudować podobne rozwiązanie za pomocą partycji:

DROP TABLE events_2022;            -- retention (fast)
-- No native columnar compression in vanilla Postgres for time-series.

Połączenie z agregatami ciągłymi

Typowy wzorzec: przechowywanie surowych danych przez 30 dni, agregatów godzinowych przez rok, a agregatów dziennych bezterminowo. Każdy poziom jest odpowiednio kompresowany lub przechowywany.

Monitorowanie

Śledzenie rozmiaru i współczynnika kompresji:

SELECT * FROM hypertable_compression_stats('metrics');

Podsumowanie

Kompresja i zasady przechowywania danych przekształcają PostgreSQL w wydajny magazyn szeregów czasowych.

  • Kompresowanie starych chunków 10–20×
  • Zasady przechowywania natychmiast usuwają chunki
  • Warstwowanie danych surowych, godzinowych i dziennych z różnymi okresami przechowywania
  • W razie potrzeby dekompresowanie w celu uzupełnienia danych historycznych

Szybkie sprawdzenie

Chcą Państwo przechowywać surowe metryki przez 7 dni i automatycznie usuwać wszystko, co starsze. Jakie rozwiązanie oferuje TimescaleDB?

Często zadawane pytania

Czy lekcja „Zasady kompresji i retencji” jest bezpłatna?

Tak — pełny tekst „Zasady kompresji i retencji” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu SQL Academy, przejdź na CoddyKit PRO. Kurs SQL Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Zasady kompresji i retencji”?

Kompresować stare fragmenty za pomocą kolumnowej kompresji TimescaleDB i automatycznie usuwać fragmenty, których okres retencji upłynął Ćwiczysz SQL Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć SQL Academy?

Nie wymagamy żadnego doświadczenia. SQL Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Zasady kompresji i retencji”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji SQL Academy?

Tak. Każda lekcja SQL Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Hypertabele TimescaleDB
  2. Agregaty ciągłe
  3. Zasady kompresji i retencji
  4. Dobór indeksów dla szeregów czasowych
← Powrót do SQL Academy