0Pricing
Advanced PostgreSQL: Indexing, Partitioning, Replication · Lekcja

Partycjonowanie zakresowe według czasu

Dowiedzą się Państwo, jak partycjonować duże tabele według zakresów czasu, aby przyspieszyć dostęp do najnowszych danych i efektywnie archiwizować starsze.

Partycjonowanie zakresowe według czasu to bezpłatna lekcja Advanced PostgreSQL: Indexing, Partitioning, Replication na CoddyKit. To lekcja 4 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 Advanced PostgreSQL: Indexing, Partitioning, Replication, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Advanced PostgreSQL: Indexing, Partitioning, Replication zawiera 4 lekcji w sumie.

Części tej lekcji nie zostały jeszcze przetłumaczone i są wyświetlane po angielsku.

Why Range Partitioning

Range partitioning splits a table into chunks based on a continuous value, most often a date or timestamp.

It is the most common strategy for time-series data such as logs, events, and orders, because old data can be dropped or archived as a whole partition.

Declaring a Range-Partitioned Table

You declare partitioning with PARTITION BY RANGE on the parent table.

CREATE TABLE events (
    id bigserial,
    created_at timestamptz NOT NULL,
    payload jsonb
) PARTITION BY RANGE (created_at);

Creating Monthly Partitions

Each child partition covers a half-open interval: the lower bound is inclusive and the upper bound is exclusive.

CREATE TABLE events_2024_01 PARTITION OF events
    FOR VALUES FROM ('2024-01-01') TO ('2024-02-01');

CREATE TABLE events_2024_02 PARTITION OF events
    FOR VALUES FROM ('2024-02-01') TO ('2024-03-01');

Half-Open Intervals

The exclusive upper bound prevents gaps and overlaps. A row at exactly 2024-02-01 00:00:00 lands in events_2024_02, never in January.

This makes consecutive partitions perfectly contiguous.

Inserting Routes Automatically

You insert into the parent table. PostgreSQL routes each row to the correct partition based on the range key.

INSERT INTO events (created_at, payload)
VALUES ('2024-01-15', '{"type":"login"}');
-- lands in events_2024_01

A DEFAULT Partition

A DEFAULT partition catches any row that does not match a defined range, avoiding insert errors.

CREATE TABLE events_default PARTITION OF events DEFAULT;

Indexes on Partitions

An index created on the parent is automatically propagated to all current and future partitions.

CREATE INDEX ON events (created_at);

Dropping Old Data Instantly

The killer feature: deleting old data is just DROP TABLE on a partition. No row-by-row DELETE, no bloat, no vacuum pressure.

DROP TABLE events_2024_01;

Querying with Pruning

When the planner sees a range predicate on the partition key it can skip entire partitions. This is called partition pruning.

SELECT count(*) FROM events
WHERE created_at >= '2024-02-10'
  AND created_at <  '2024-02-20';
-- only events_2024_02 is scanned

Automating Partition Creation

Tools like pg_partman create future partitions ahead of time on a schedule, so you never insert into the default partition by accident.

  • Define a retention window
  • Pre-create N future partitions
  • Detach or drop expired ones

Choosing the Range Width

Pick a width that keeps each partition in the tens of millions of rows. Too many tiny partitions hurt planning time; too few huge ones lose pruning benefits.

Quick Check

Why is dropping an old partition better than a bulk DELETE?

Recap

You learned range partitioning by time: declare with PARTITION BY RANGE, create half-open child intervals, rely on automatic routing and pruning, and archive by dropping whole partitions. Automation tools like pg_partman keep the partition set healthy.

Często zadawane pytania

Czy lekcja „Partycjonowanie zakresowe według czasu” jest bezpłatna?

Tak — pełny tekst „Partycjonowanie zakresowe według czasu” 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 Advanced PostgreSQL: Indexing, Partitioning, Replication, przejdź na CoddyKit PRO. Kurs Advanced PostgreSQL: Indexing, Partitioning, Replication zawiera 4 lekcji w sumie.

Co nauczysz się w „Partycjonowanie zakresowe według czasu”?

Dowiedzą się Państwo, jak partycjonować duże tabele według zakresów czasu, aby przyspieszyć dostęp do najnowszych danych i efektywnie archiwizować starsze. Ćwiczysz Advanced PostgreSQL: Indexing, Partitioning, Replication 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ąć Advanced PostgreSQL: Indexing, Partitioning, Replication?

Nie wymagamy żadnego doświadczenia. Advanced PostgreSQL: Indexing, Partitioning, Replication 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 4 z 4.

Ile czasu zajmuje lekcja „Partycjonowanie zakresowe według czasu”?

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 Advanced PostgreSQL: Indexing, Partitioning, Replication?

Tak. Każda lekcja Advanced PostgreSQL: Indexing, Partitioning, Replication 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. Partyсjonowanie haszujące do dystrybucji
  2. Techniki podpartycjonowania
  3. Zarządzanie tabelami partycjonowanymi
  4. Partycjonowanie zakresowe według czasu
← Powrót do Advanced PostgreSQL: Indexing, Partitioning, Replication