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.
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.
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 a TRIGGER
w tabeli głównej, która przekierowuje WSTAWKI do partycji bieżącego tygodnia na podstawie czasu systemowego. Zawsze loguj się do tabeli głównej log
. 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 ...