PostgreSQLPytanie 10 z 11
Ogromna tabela logów — jak ją partycjonować?
Najpierw odpowiedz na głos lub w myślach, potem porównaj.
Odpowiedź
Dobieram klucz do zapytań i retencji. Dla logów naturalnym kandydatem jest zakres czasu; region może być drugim poziomem, jeśli uzasadniają to odczyty i rozkład danych.
SQL
CREATE TABLE logs (
created_at timestamptz NOT NULL,
region text,
message text
) PARTITION BY RANGE (created_at);
CREATE TABLE logs_2026_01 PARTITION OF logs
FOR VALUES FROM ('2026-01-01 00:00:00+00')
TO ('2026-02-01 00:00:00+00');Sprawdzam: czy filtr czasu pozwala pominąć partycje, jak tworzymy przyszłe partycje i usuwamy stare.
Pułapka: partycjonowanie w jednej bazie nie jest shardingiem na wiele serwerów. Indeksy i liczba partycji nadal wymagają projektu. Przykład nie ma partycji dla innych miesięcy.
Jak poszło? Bądź szczery — „Jeszcze nie” dodaje pytanie do powtórki.