Trước tiên hãy xem xét nhận xét của tôi.
Các postgres lên đến và bao gồm 9.4 tự nó không ghi lại dấu thời gian khi các hàng được chèn hoặc cập nhật.
Có một số cột hệ thống trong tiêu đề hàng điều đó có thể giúp ích cho công việc pháp y. Thứ tự vật lý của các hàng ( ctid
) can là một chỉ báo nếu không có gì khác xảy ra với bảng kể từ đó. Trong các trường hợp đơn giản, các hàng mới được nối vào phần cuối vật lý của bảng khi được chèn, vì vậy ctid
cho biết những gì đã được chèn sau cùng - cho đến khi có bất kỳ điều gì thay đổi trong bảng. Postgres có thể tự do sắp xếp lại thứ tự vật lý của các hàng theo ý muốn, chẳng hạn với VACUUM
. Bất kỳ UPDATE
nào cũng viết một phiên bản hàng mới, có thể thay đổi vị trí vật lý. Phiên bản mới không nhất thiết phải ở cuối bảng. Postgres cố gắng giữ phiên bản hàng mới trên cùng một trang dữ liệu nếu có thể ( Cập nhật HOT
) ...
Điều đó nói rằng, đây là một truy vấn đơn giản để có được vật lý các hàng cuối cùng cho một bảng nhất định:
SELECT ctid, *
FROM big
ORDER BY ctid DESC
LIMIT 10;
Các câu trả lời liên quan trên dba.SE với thông tin chi tiết:
- VACUUM trả lại dung lượng đĩa cho hệ điều hành
- Làm cách nào để phân tách ctid thành số trang và số hàng?
Chèn id giao dịch xmin
có thể hữu ích:
Nếu bạn tình cờ có bản sao lưu đối với DB thử nghiệm từ ngay trước khi sự cố xảy ra, điều đó sẽ hữu ích. Khôi phục trạng thái cũ thành một lược đồ riêng của DB thử nghiệm và so sánh các bảng ...
Thông thường, tôi thêm một hoặc hai timestamptz
cột vào các bảng quan trọng cho thời điểm hàng được chèn và / hoặc khi hàng được cập nhật lần cuối. Điều đó sẽ cực kỳ hữu ích cho bạn ngay bây giờ ...
Điều gì sẽ cũng rất tốt cho bạn: các tính năng "tạm thời" được giới thiệu trong tiêu chuẩn SQL với SQL:2011
. Nhưng điều đó chưa được triển khai trong Postgres.
Có một trang trong Postgres Wiki .
Cũng có một tiện ích mở rộng không chính thức trên PGXN
. Tôi chưa thử nghiệm nó và không thể nói nó là bao xa.
Postgres 9.5 giới thiệu một tính năng để ghi lại dấu thời gian cam kết (như @ Craig đã nhận xét ). Cần bật thủ công trước khi bắt đầu ghi. Hướng dẫn sử dụng:
Và một số chức năng hoạt động với nó.