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

Đặt nguyên tử giá trị SERIAL khi thực hiện giao dịch

Postgres 9.5 đã giới thiệu một tính năng mới liên quan đến vấn đề này: dấu thời gian cam kết .

Bạn chỉ cần kích hoạt track_commit_timestamp trong postgresql.conf (và khởi động lại!) để bắt đầu theo dõi dấu thời gian cam kết. Sau đó, bạn có thể truy vấn:

SELECT * FROM tbl
WHERE  pg_xact_commit_timestamp(xmin) >= '2015-11-26 18:00:00+01';

Đọc chương "Cam kết theo dõi dấu thời gian" trong Postgres Wiki.
Tiện ích có liên quan các chức năng trong sách hướng dẫn .

Độ biến động của hàm chỉ là VOLATILE vì ID giao dịch (xid ) có thể quấn quanh mỗi định nghĩa. Vì vậy, bạn không thể tạo chỉ mục chức năng trên đó.
Bạn có thể giả mạo IMMUTABLE sự biến động trong trình bao bọc chức năng cho các ứng dụng trong một khung thời gian giới hạn, nhưng bạn cần lưu ý các tác động. Trường hợp liên quan có giải thích thêm:

Đối với nhiều trường hợp sử dụng (như trường hợp của bạn?) Chỉ quan tâm đến trình tự cam kết (và không phải thời gian tuyệt đối), có thể hiệu quả hơn khi làm việc với xmin truyền tới bigint "trực tiếp" (xmin::text::bigint ) thay vì dấu thời gian cam kết. (xid là một số nguyên không dấu bên trong, nửa trên không khớp với một số nguyên integer có dấu .) Một lần nữa, hãy lưu ý các hạn chế do có thể xảy ra xung quanh xid.

Vì lý do tương tự, dấu thời gian cam kết không được lưu giữ vô thời hạn . Đối với cơ sở dữ liệu vừa và nhỏ, xid sự bao bọc hầu như không bao giờ xảy ra - nhưng nó sẽ xảy ra cuối cùng nếu cụm tồn tại đủ lâu. Đọc chương "Ngăn ngừa lỗi bao trùm ID giao dịch" trong sách hướng dẫn để biết chi tiết.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách chuẩn bị các câu lệnh và tham số liên kết trong Postgresql cho C ++

  2. Cách POSITION () hoạt động trong PostgreSQL

  3. Có thể trả lời các truy vấn trên một chế độ xem trước khi hiện thực hóa hoàn toàn chế độ xem không?

  4. Sử dụng PgBouncer Connection Pooler cho PostgreSQL với ClusterControl 1.8.2

  5. Chuyển id người dùng đến trình kích hoạt PostgreSQL