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.
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.
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 a TRIGGER
di tabel master yang mengarahkan kembali INSERT ke partisi minggu ini berdasarkan waktu sistem. Selalu masuk ke tabel master log
. 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 ...