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
- Hypertabele TimescaleDB
- Agregaty ciągłe
- Zasady kompresji i retencji
- Dobór indeksów dla szeregów czasowych