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

StaleObjectStateException cập nhật tần số cao

Có vẻ như bạn đã định cấu hình Hibernate để sử dụng kiểm soát đồng thời lạc quan . Điều đó có nghĩa là bảng Người dùng của bạn có trường phiên bản Hibernate tăng lên mỗi lần cập nhật hàng.

Nhiều khả năng giao dịch của bạn bắt đầu ở phần đầu của yêu cầu HTTP và kết thúc ở phần cuối của phản hồi HTTP. Điều này có nghĩa là quá trình chỉnh sửa người dùng bao gồm hai giao dịch:một giao dịch để điền biểu mẫu web và một giao dịch để lưu các thay đổi.

Trong trường hợp đó, việc thay đổi mức cô lập của cơ sở dữ liệu sẽ không có tác dụng gì. Nhiều khả năng tất cả những gì bạn sẽ nhận được là hiệu suất và khả năng mở rộng kém hơn .

Không phải là một điều xấu khi có StaleObjectException S. Nó phản ánh thế giới thực - mọi người thực sự làm cùng một việc thỉnh thoảng và xung đột có thể xảy ra. Câu hỏi đặt ra là, khi một xung đột đã được phát hiện, bạn làm thế nào để giải quyết nó theo cách làm hài lòng người dùng cuối? Nó có thể được giải quyết mà không cần sự hỗ trợ của người dùng không?

Các chiến lược khả thi có thể là

  • ghi đè các thay đổi của người dùng trước (thường không phải những gì bạn muốn - do đó cần kiểm soát đồng thời),

  • hiển thị thông báo lỗi yêu cầu người dùng làm mới và thực hiện lại các thay đổi của họ,

  • tự động hợp nhất các thay đổi mà không ghi đè các thay đổi của người dùng trước (đôi khi có thể)

  • thông báo cho người dùng về tính ổn định của dữ liệu của họ và cung cấp cho họ một cách để hợp nhất các thay đổi của mình theo cách thủ công

Tất cả phụ thuộc vào ngữ cảnh.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Truy vấn bảng chéo động MySQL:Chọn bản ghi con làm cột bổ sung

  2. Không chuyển đổi được từ loại [java.lang.Object []] sang loại

  3. Nhiều câu lệnh IF trên MYSQL

  4. Trong MySQL Overhead có nghĩa là gì, điều gì không tốt về nó và cách khắc phục nó?

  5. Tại sao mysql bỏ qua một số id tăng tự động?