Postgres có bất kỳ tính năng nào để hỗ trợ các bản ghi cũ không?
Tôi muốn sử dụng Postgres để đăng nhập, như một loại hàng đợi, trong đó các bản ghi (sự kiện nhật ký) cũ hơn hai tuần sẽ tự động bị xóa.
Postgres có bất kỳ tính năng nào để hỗ trợ các bản ghi cũ không?
Tôi muốn sử dụng Postgres để đăng nhập, như một loại hàng đợi, trong đó các bản ghi (sự kiện nhật ký) cũ hơn hai tuần sẽ tự động bị xóa.
Câu trả lời:
Không có tính năng nào được tích hợp để xóa các hàng tự động theo chế độ dựa trên thời gian (mà tôi sẽ biết).
Bạn có thể chạy một cron-job hàng ngày (bạn quyết định) để lên lịch DELETE
các lệnh đơn giản hoặc sử dụng pgAgent cho mục đích này.
Hoặc bạn có thể sử dụng phân vùng với các phân vùng hàng tuần kế thừa từ bảng chính , hãy gọi nó log
. Điều đó sẽ làm cho việc xóa rất rẻ : chỉ cần giữ hai tuần gần nhất và bỏ các phân vùng cũ hơn.
Tạo một RULE
hoặc một TRIGGER
trên bảng chính chuyển hướng INSERT đến phân vùng của tuần hiện tại dựa trên thời gian hệ thống. Luôn đăng nhập vào bảng chính log
. Tạo bảng con trước thời hạn. Hãy chắc chắn rằng vài tuần tới để chắc chắn và điều hành công việc định kỳ hàng tuần có thêm các bảng con trong tương lai ...
Có các ví dụ mã trong hướng dẫn .
Câu trả lời liên quan với chức năng tạo plpgsql tự động:
Các giải pháp liên quan tạo lại một RULE
để chuyển hướng INSERT. Một chức năng kích hoạt có thể ghi vào phân vùng hiện tại một cách linh hoạt ...