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

Tôi có nên bao gồm các CHỌN trong một giao dịch không?

Phiên bản ngắn gọn:"Nó phụ thuộc".

Phiên bản dài:

Nếu bạn đang thực hiện chu trình đọc-sửa đổi-ghi, thì không chỉ chu trình đó phải ở trong một giao dịch mà bạn phải SELECT ... FOR UPDATE bất kỳ hồ sơ nào bạn định sửa đổi sau này. Nếu không, bạn sẽ gặp rủi ro khi ghi bị mất, nơi bạn ghi đè lên bản cập nhật mà người khác đã thực hiện từ khi bạn đọc bản ghi và khi bạn viết bản cập nhật.

SERIALIZABLE cách ly giao dịch cũng có thể giúp giải quyết vấn đề này.

Bạn thực sự cần hiểu về tính đồng thời và sự cô lập. Thật không may, câu trả lời đơn giản, dễ dàng duy nhất "chỉ cần làm X" mà không hiểu nó là bắt đầu mọi giao dịch bằng cách khóa tất cả các bảng có liên quan. Hầu hết mọi người không muốn làm điều đó.

Tôi đề nghị đọc (hoặc hai, ba hoặc bốn - đó là tài liệu khó) tài liệu cách ly tx . Thử nghiệm với psql đồng thời phiên (nhiều thiết bị đầu cuối) để tạo ra các điều kiện và xung đột cuộc đua.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hiển thị tin nhắn cuối cùng trong một mảng tin nhắn

  2. Làm cách nào để tôi có được các hàng ĐÃ CHÈN và CẬP NHẬT cho hoạt động UPSERT trong postgres

  3. 7 mẹo thực hành tốt nhất để tải dữ liệu hàng loạt PostgreSQL

  4. Postgresql trích xuất hàng cuối cùng cho mỗi id

  5. Phép chia số nguyên trả về 0