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

Khi nào thì chọn khóa và mở khóa cập nhật?

Các khóa được thực hiện trong khi (thường ở hoặc gần đầu) thực hiện lệnh. Các khóa (ngoại trừ khóa tư vấn) được phát hành chỉ khi một giao dịch cam kết hoặc quay trở lại. Không có FOR UNLOCK , cũng không có UNLOCK lệnh đảo ngược tác động của LOCK cấp bảng yêu cầu. Tất cả điều này được giải thích trong phần kiểm soát đồng thời của tài liệu PostgreSQL.

Bạn phải cam kết hoặc khôi phục giao dịch của mình để giải phóng khóa.

Ngoài ra, không thực sự hợp lý khi hỏi "hàng này đã bị xóa bởi một giao dịch đồng thời khác chưa". Nó không thực sự bị xóa cho đến khi giao dịch xóa hàng cam kết ... và thậm chí sau đó, nó có thể đã xóa và chèn lại hàng hoặc một giao dịch đồng thời khác có thể đã chèn lại hàng.

Bạn có đang tình cờ xây dựng hệ thống hàng đợi tác vụ hoặc hàng đợi tin nhắn không, bởi vì nếu vậy, vấn đề đó đã được giải quyết và bạn không nên cố gắng phát minh lại bánh xe phức tạp bất thường đó. Xem PGQ, ActiveMQ, RabbitMQ, ZeroMQ, v.v. (Các phiên bản PostgreSQL trong tương lai có thể bao gồm FOR UPDATE SKIP LOCKED vì điều này đang được thử nghiệm, nhưng chưa được phát hành tại thời điểm viết bài).

Tôi khuyên bạn nên đăng một câu hỏi mới với mô tả chi tiết hơn về vấn đề cơ bản mà bạn đang cố gắng giải quyết. Bạn đang giả định rằng giải pháp cho vấn đề của bạn là "tìm hiểu xem hàng đã bị xóa chưa" hoặc "mở khóa hàng". Đó có lẽ không thực sự là giải pháp. Nó hơi giống như ai đó nói "tôi mua xăng ở đâu" khi chiếc xe đẩy của họ không đi nên họ cho rằng nó đã hết xăng. Nhiên liệu không phải là vấn đề, vấn đề là xe đạp đẩy không tốn nhiên liệu và bạn phải đạp chúng.

Giải thích lý lịch. Giải thích những gì bạn đang cố gắng đạt được. Trên hết, đừng đăng mã giả, hãy đăng mã thực mà bạn đang gặp sự cố , tốt nhất là ở dạng khép kín và có thể chạy được.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sự khác biệt giữa postgres và postgresql_psycopg2 làm công cụ cơ sở dữ liệu cho django là gì?

  2. Cách so sánh hai mảng và chỉ chọn các phần tử không phù hợp Trong postgres

  3. Cách tốt nhất để cài đặt hstore trên nhiều lược đồ trong cơ sở dữ liệu Postgres?

  4. Lưu trữ và truy xuất hình ảnh trong Postgresql bằng Java

  5. Docker container cho Postgres 9.1 không để lộ cổng 5432 cho máy chủ