Invecchiamento automatico (cancellazione) di vecchi record in Postgres


15

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.


Usa il partizionamento. La sola eliminazione dei record non ridurrà le dimensioni della tabella sul disco.
sivann,

@sivann La tua raccomandazione non presuppone che il suo problema sia la dimensione del disco? Se il suo problema è il tempo di esecuzione della query, sembra che la cancellazione potrebbe essere una risposta forse più semplice del partizionamento, no? (sto ancora cercando di capirlo da solo)
stephenmm

1
Il problema è semplicemente che i record di registro non sono più interessanti dopo un certo periodo di tempo. L'eliminazione di vecchie righe dovrebbe fare spazio a nuove nuove righe.
Basil Bourque,

Risposte:


15

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 DELETEcomandi 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 RULEo a TRIGGERsulla 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 RULEper reindirizzare INSERT. Una funzione trigger potrebbe scrivere dinamicamente nella partizione corrente ...

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.