Tôi hiểu rằng mức cô lập Serializable là mức hạn chế nhất trong tất cả các mức cách ly. Tôi đang tò mò mặc dù những loại ứng dụng sẽ yêu cầu mức độ cô lập này, hoặc khi tôi nên xem xét việc sử dụng nó?Cấp cách ly - Có thể tuần tự hóa. Khi nào tôi nên sử dụng?
Trả lời
Tự hỏi mình câu hỏi sau: Sẽ là xấu nếu ai đó INSERT một hàng mới vào dữ liệu của bạn trong khi giao dịch của bạn đang chạy? Điều này có ảnh hưởng đến kết quả của bạn theo cách không thể chấp nhận được không? Nếu vậy, hãy sử dụng mức SERIALIZABLE.
Từ MSDN regarding SET TRANSACTION ISOLATION LEVEL:
SERIALIZABLE
Places một khóa phạm vi trên tập hợp dữ liệu, ngăn chặn những người dùng khác từ việc cập nhật hoặc chèn hàng vào tập dữ liệu đến khi giao dịch hoàn tất. Đây là mức hạn chế nhất của các mức cách ly . Bởi vì đồng thời thấp hơn, hãy sử dụng tùy chọn này chỉ khi cần thiết. Tùy chọn này có cùng tác dụng như đặt HOLDLOCK trên tất cả các bảng trong tất cả các phát biểu SELECT trong một giao dịch.
Vì vậy, giao dịch của bạn duy trì tất cả các khóa trong suốt cuộc đời - ngay cả những giao dịch thường bị hủy sau khi sử dụng. Điều này làm cho nó xuất hiện rằng tất cả các giao dịch đang chạy một tại một thời điểm, do đó tên SERIALIZABLE. Lưu ý từ Wikipedia regarding isolation levels:
SERIALIZABLE mức
cô lập này xác định rằng tất cả các giao dịch xảy ra trong một thời trang hoàn toàn cô lập; tức là, như thể tất cả các giao dịch trong hệ thống đã có thực hiện serially, một sau khác. DBMS chỉ có thể thực hiện hai hoặc nhiều giao dịch hơn cùng một lúc chỉ khi ảo ảnh về thực thi nối tiếp có thể được duy trì.
Thử tính toán. Các giao dịch trong các tài khoản vốn có thể được tuần tự hóa nếu bạn muốn có các giá trị tài khoản thích hợp VÀ tuân theo những điều như giới hạn tín dụng.
- 1. khóa cách ly giao dịch tuần tự
- 2. Khi nào tôi nên sử dụng chuỗi tuần tự hóa XML so với chuỗi tuần tự hóa nhị phân trong khuôn khổ .NET?
- 3. Làm thế nào tôi có thể tuần tự hóa một đóng cửa trong Perl?
- 4. Không thể tuần tự hóa tham số loại 'System.Linq.Enumerable ...' khi sử dụng WCF, LINQ, JSON
- 5. Tôi có thể tuần tự hóa từ điển <string, object> bằng cách sử dụng serializer DataContract không?
- 6. Khi nào tôi nên sử dụng adorners?
- 7. Tôi có thể tuần tự hóa bản đồ STL trong MFC bằng cách sử dụng CArchive không?
- 8. Tôi có thể cung cấp tuần tự hóa tùy chỉnh cho XmlSerializer mà không cần triển khai IXmlSerializable không?
- 9. Làm thế nào tôi có thể tuần tự hóa thiết kế báo cáo DevExpress XtraReport
- 10. Làm cách nào để có thể tạo khai báo DOCTYPE với API tuần tự hóa cấp 3 DOM?
- 11. Sử dụng readObject/writeObject trong Tuần tự hóa
- 12. Hạt sao lưu JSF có thể được tuần tự hóa?
- 13. Có thể tuần tự hóa khối mã C# không?
- 14. Tôi nên sử dụng những gì để tuần tự hóa một DataTable thành JSON trong ASP.NET 2.0?
- 15. Cấp độ giao dịch và cách ly
- 16. Khi nào tôi nên sử dụng ConcurrentSkipListMap?
- 17. Sử dụng Gson để tuần tự hóa POJO
- 18. Khi nào tôi nên sử dụng AQL?
- 19. Làm thế nào để tuần tự hóa các trường tạm thời bằng cách sử dụng jackson?
- 20. Khi nào tôi nên sử dụng SynchronousQueue
- 21. Khi nào tôi nên sử dụng GC.SuppressFinalize()?
- 22. Khi nào tôi nên sử dụng Trình tạo giao diện?
- 23. Khi nào tôi nên sử dụng require() và khi nào nên sử dụng define()?
- 24. Tôi cần một khung tuần tự hóa cho D
- 25. Tôi có thể tuần tự hóa các loại tùy ý với protobuf-net không?
- 26. Tôi có thể tuần tự hóa ExpandoObject trong .NET 4 không?
- 27. Làm cách nào để bản địa hóa khi tuần tự hóa JSON?
- 28. Khi nào tôi nên sử dụng Hashtable so với HashMap
- 29. Tôi có thể tuần tự hóa XML thẳng thành chuỗi thay vì Luồng bằng C# không?
- 30. Khi nào tôi nên sử dụng stdClass và khi nào tôi nên sử dụng một mảng trong mã php oo?
Tham chiếu tốt, có liên quan: (có thể tuần tự hóa so với ảnh chụp nhanh) http://blogs.msdn.com/b/craigfr/archive/2007/05/16/serializable-vs-snapshot-isolation-level.aspx –
Đây là liên kết được cập nhật cho ['SET TRANSACTION ISOLATION LEVEL' từ MSDN] (https://msdn.microsoft.com/en-us/library/ms173763.aspx) –
@AlexYursha Cảm ơn bạn, tôi đã cập nhật bài đăng. –