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

Tranh chấp hàng oracle gây ra lỗi deadlock trong ứng dụng JMS thông lượng cao

Bế tắc ngụ ý rằng mỗi luồng đang cố gắng cập nhật nhiều hàng trong một giao dịch duy nhất và những cập nhật đó đang được thực hiện theo một thứ tự khác nhau trên các luồng. Do đó, câu trả lời đơn giản nhất có thể sẽ là sửa đổi mã để các thông báo trong cùng một giao dịch được áp dụng theo một số thứ tự xác định (tức là theo thứ tự của khóa chính). Điều đó sẽ đảm bảo rằng bạn sẽ không bao giờ gặp bế tắc mặc dù bạn vẫn nhận được các khóa chặn trong khi một chuỗi chờ một chuỗi khác thực hiện giao dịch của nó.

Tuy nhiên, lùi lại một bước, có vẻ như bạn không thực sự muốn nhiều chuỗi cập nhật cùng một hàng trong một bảng khi bạn không thể dự đoán thứ tự của các bản cập nhật. Có vẻ như rất có thể điều đó sẽ dẫn đến nhiều bản cập nhật bị mất và một số hành vi khá khó lường. Chính xác thì ứng dụng của bạn đang làm gì mà có thể khiến cho loại thứ này trở nên hợp lý? Bạn có đang làm điều gì đó như cập nhật bảng tổng hợp sau khi chèn các hàng vào bảng chi tiết (tức là cập nhật số lượt xem một bài đăng ngoài việc ghi nhật ký thông tin về một chế độ xem cụ thể) không? Nếu vậy, các hoạt động đó có thực sự cần đồng bộ không? Hoặc bạn có thể cập nhật số lượt xem định kỳ trong một chuỗi khác bằng cách tổng hợp số lượt xem trong N giây qua không?



  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 giải quyết vấn đề với Oracle DBMS_LOB

  2. Độ dài tối đa của VARCHAR là 4000 nhưng chỉ có thể lưu trữ văn bản tiếng Thái dài 2666 byte

  3. CHÈN VÀO CHỌN TỪ TRUY CẬP VÀO ORACLE

  4. Trình điều khiển OJDBC nào cho Java 6?

  5. Làm cách nào để biết liệu cơ sở dữ liệu tiên tri có được đặt thành tự động gửi hay không?