PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Làm cách nào để liệt kê tất cả các bảng có dữ liệu thay đổi trong 24 giờ qua?

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:

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ó.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Liệt kê tất cả các bảng trong postgresql information_schema

  2. Di chuyển PostgreSQL sang Đám mây - So sánh các giải pháp từ Amazon, Google và Microsoft

  3. Xem lỗi trong PostgreSQL

  4. Triển khai Postgres11 đến Elastic Beanstalk - Yêu cầu / etc / redhat-release

  5. Rails phương thức không xác định cho ActiveRecord_Associations_CollectionProxy