O Postgres possui algum recurso para oferecer suporte a registros antigos antigos?
Desejo usar o Postgres para registrar, como uma espécie de fila, em que os registros (eventos de log) com mais de duas semanas são excluídos automaticamente.
postgresql
delete
queue
Basil Bourque
fonte
fonte
Respostas:
Não há nenhum recurso incorporado para excluir linhas automaticamente em um regime baseado em tempo (que eu saberia).
Você pode executar um cron-job diário (você decide) para agendar
DELETE
comandos simples ou usar o pgAgent para essa finalidade.Ou você pode usar o particionamento com partições semanais que herdam de uma tabela mestre , vamos chamá-lo
log
. Isso tornaria a exclusão muito barata : mantenha as últimas duas semanas e descarte as partições mais antigas.Crie um
RULE
ou umTRIGGER
na tabela mestre que redireciona INSERTs para a partição da semana atual com base na hora do sistema. Sempre faça logon na tabela mestrelog
. Crie tabelas filho antecipadamente. Faça isso várias semanas antes para ter certeza e execute um trabalho semanal do cron que inclua futuras tabelas filho ...Existem exemplos de código no manual .
Resposta relacionada com uma função plpgsql criando tabelas automaticamente:
A solução relacionada recria a
RULE
para redirecionar INSERTs. Uma função de disparo pode gravar dinamicamente na partição atual ...fonte