Postgres ha qualche funzionalità per supportare vecchi record obsoleti?
Voglio utilizzare Postgres per la registrazione, come una sorta di coda, in cui i record (eventi di registro) più vecchi di due settimane vengono automaticamente cancellati.
Postgres ha qualche funzionalità per supportare vecchi record obsoleti?
Voglio utilizzare Postgres per la registrazione, come una sorta di coda, in cui i record (eventi di registro) più vecchi di due settimane vengono automaticamente cancellati.
Risposte:
Non esiste alcuna funzione integrata per eliminare automaticamente le righe in base a un regime basato sul tempo (che vorrei sapere).
È possibile eseguire un cron-job giornaliero (si decide) per pianificare semplici DELETE
comandi o utilizzare pgAgent allo scopo.
Oppure puoi usare il partizionamento con partizioni settimanali che ereditano da una tabella principale , chiamiamolo log
. Ciò renderebbe la cancellazione molto economica : basta mantenere le ultime due settimane e rilasciare le partizioni più vecchie.
Creare a RULE
o a TRIGGER
sulla tabella principale che reindirizza INSERT alla partizione della settimana corrente in base all'ora di sistema. Accedere sempre alla tabella principale log
. Crea tabelle figlio in anticipo. Assicurati che siano necessarie alcune settimane prima ed esegui un cron job settimanale che aggiunga future tabelle figlio ...
Ci sono esempi di codice nel manuale .
Risposta correlata con una funzione plpgsql che crea tabelle automaticamente:
La soluzione correlata ricrea un RULE
per reindirizzare INSERT. Una funzione trigger potrebbe scrivere dinamicamente nella partizione corrente ...