Czy Postgres ma jakieś funkcje wspierające wygaśnięcie starych rekordów?
Chcę używać Postgres do rejestrowania, jako rodzaju kolejki, w której rekordy (zdarzenia dziennika) starsze niż dwa tygodnie są automatycznie usuwane.
postgresql
delete
queue
Basil Bourque
źródło
źródło
Odpowiedzi:
Nie ma wbudowanej funkcji automatycznego usuwania wierszy w systemie opartym na czasie (o którym bym wiedział).
Możesz uruchomić codzienne (decydujesz) zadanie cron, aby zaplanować proste
DELETE
polecenia lub użyć do tego celu pgAgent .Lub możesz użyć partycjonowania z partycjami cotygodniowymi, które dziedziczą z tabeli głównej , nazwijmy to
log
. Dzięki temu usuwanie byłoby bardzo tanie : zachowaj ostatnie dwa tygodnie i porzuć starsze partycje.Utwórz a
RULE
lub aTRIGGER
w tabeli głównej, która przekierowuje WSTAWKI do partycji bieżącego tygodnia na podstawie czasu systemowego. Zawsze loguj się do tabeli głównejlog
. Twórz z wyprzedzeniem tabele potomne. Poświęć na to kilka tygodni, aby mieć pewność, i uruchom cotygodniowe zadanie cron, które doda przyszłe tabele potomne ...Istnieją przykłady kodu w instrukcji .
Powiązana odpowiedź z funkcją plpgsql automatycznie tworzącą tabele:
Powiązane rozwiązanie odtwarza w
RULE
celu przekierowania WSTAWEK. Funkcja wyzwalacza może zapisywać do bieżącej partycji dynamicznie ...źródło