Apakah Postgres memiliki fitur untuk mendukung catatan lama yang menua?
Saya ingin menggunakan Postgres untuk mencatat, sebagai semacam antrian, di mana catatan (peristiwa log) yang lebih dari dua minggu secara otomatis dihapus.
postgresql
delete
queue
Basil Bourque
sumber
sumber
Jawaban:
Tidak ada fitur bawaan untuk menghapus baris secara otomatis pada rezim berbasis waktu (yang akan saya ketahui).
Anda dapat menjalankan cron-job harian (Anda memutuskan) untuk menjadwalkan
DELETE
perintah sederhana atau menggunakan pgAgent untuk tujuan tersebut.Atau Anda bisa menggunakan partisi dengan partisi mingguan yang mewarisi dari tabel master , sebut saja
log
. Itu akan membuat penghapusan menjadi sangat murah : simpan saja dua minggu terakhir dan jatuhkan partisi yang lebih lama.Buat a
RULE
atau aTRIGGER
di tabel master yang mengarahkan kembali INSERT ke partisi minggu ini berdasarkan waktu sistem. Selalu masuk ke tabel masterlog
. Buat tabel anak sebelumnya. Pastikan bahwa beberapa minggu ke depan untuk memastikan dan menjalankan pekerjaan cron mingguan yang menambahkan tabel anak masa depan ...Ada contoh kode dalam manual .
Jawaban terkait dengan fungsi plpgsql membuat tabel secara otomatis:
Solusi terkait menciptakan kembali
RULE
untuk mengarahkan INSERT. Fungsi pemicu dapat menulis ke partisi saat ini secara dinamis ...sumber