Sự khác nhau giữa việc sử dụng "SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED" và NOLOCK là gì? Cái này tốt hơn những cái khác phải không?NOLOCK so với mức cô lập giao dịch
Trả lời
Chúng giống nhau, chỉ khác nhau. NOLOCK được đặt trên mỗi bảng và SET Transaction...
có thể được đặt như một khối.
cảm ơn bạn đã xác nhận! – Jason
là nó tương đương với việc đặt nolock trong tất cả các bảng trong sql đang được thực hiện? –
NOLOCK là gợi ý truy vấn và do đó chỉ áp dụng cho bảng specifc trong truy vấn mà nó được chỉ định.
Đặt mức cách ly giao dịch áp dụng cho tất cả mã được thực hiện do đó trong kết nối hiện tại hoặc cho đến khi được sửa đổi rõ ràng.
Để làm rõ, chức năng cấp isoloation tại nơi làm việc là như nhau tuy nhiên phạm vi được bao phủ có thể không.
Xem that answer từ một vài giờ trước, với câu hỏi SQL Server SELECT statements causing blocking.
Trích dẫn Remus Rusanu:
SELECT có thể chặn cập nhật. Mô hình và truy vấn dữ liệu được thiết kế phù hợp sẽ chỉ gây ra việc chặn tối thiểu và không phải là vấn đề. Các 'bình thường' với NOLOCK gợi ý là hầu như luôn luôn là câu trả lời sai. Câu trả lời đúng là điều chỉnh truy vấn của bạn để nó không quét các bảng lớn.
Nếu truy vấn không có khả năng thì bạn nên cân nhắc mức SNAPSHOT ISOLATION, thứ hai bạn nên cân nhắc sử dụng DATABASE SNAPSHOTS và tùy chọn cuối cùng phải là DIRTY READS (và tốt hơn là thay đổi mức cách ly thay vì sử dụng NOLOCK HINT). Lưu ý rằng đọc bẩn, như tên nêu rõ, sẽ trả về dữ liệu không nhất quán (ví dụ: tổng số tờ của bạn có thể không cân bằng).
Các câu trả lời khác cũng có thể giúp bạn.
Chỉ cần ý kiến của tôi nhưng tham chiếu được cung cấp ở đây không trả lời câu hỏi được đăng. –
Không hoàn toàn, có, nhưng tôi nghĩ rằng nó có thể giúp, vì nó so sánh NOLOCK với các phương pháp cách ly khác. –
Chúng có cùng tác dụng, chỉ một cái được sử dụng làm gợi ý khóa (nolock) và cái kia được sử dụng cho phạm vi kết nối.
Hãy cẩn thận với một trong những thứ đó - đọc có thể là một điều rất xấu tùy thuộc vào ứng dụng của bạn. Đọc cùng một bản ghi hai lần hoặc thiếu một bản ghi do chuyển động trang có thể là một điều rất khó hiểu đối với người dùng ...
- 1. mức cô lập giao dịch giải thích tốt
- 2. Hướng dẫn kỹ lưỡng về Khóa/Giao dịch/Mức cô lập trong Rails
- 3. Thông báo về mức độ cô lập được hỗ trợ bởi Sql cho các giao dịch
- 4. Làm cách nào để đặt mức cô lập giao dịch trong SQLAlchemy cho PostgreSQL?
- 5. Làm cách nào để bỏ đặt/đặt lại mức cô lập giao dịch cho SQL Server?
- 6. Mức cô lập giao dịch mặc định cho SQL Server bằng ADO.NET là gì?
- 7. Mức cô lập ADO.NET mặc định là gì?
- 8. thiết lập mức cô lập cho các thủ tục lưu trữ postgresql
- 9. Phạm vi mức cách ly giao dịch
- 10. Mức cách ly giao dịch
- 11. Mức cách ly trong Giao dịch Sql
- 12. ĐỌC KẾT NỐI mức cô lập cơ sở dữ liệu trong oracle
- 13. SQL Server: làm thế nào để thiết lập mức cô lập mặc định cho toàn bộ thủ tục lưu sẵn?
- 14. khi nào/khóa nào được giữ/giải phóng trong mức cô lập READ COMMITTED
- 15. Cách tìm mức giao dịch hiện tại?
- 16. Làm cách nào tôi có thể thay đổi mức GIAO DIỆN GIAO DỊCH GIAO DỊCH mặc định trong SQL Server 2005?
- 17. NOLOCK với Đa luồng
- 18. giao dịch liên quan mức độ cách ly với ổ khóa trên bàn
- 19. Cách kiểm tra mức cô lập của một kết nối khác SQL Server 2008
- 20. Mức giao dịch tùy chỉnh trong Firebug DBX của Delphi
- 21. NOLOCK với LINQ to SQL
- 22. Hiệu quả của giao dịch trong mã so với DB
- 23. Thử nghiệm Mô-đun rối trong cô lập với Jasmine
- 24. Lập trình socket so với dịch vụ web?
- 25. Đặc điểm so với giao diện so với Mixins?
- 26. Đặt mức cách ly giao dịch của mysql
- 27. Các công cụ để cô lập lỗi đập ngăn xếp
- 28. Mức cột so với mức ràng buộc mức bảng trong máy chủ sql?
- 29. Để NOLOCK hoặc KHÔNG để NOLOCK, đó là câu hỏi
- 30. Giao dịch có thể thực hiện được so với CHỌN ĐỂ CẬP NHẬT
Lưu ý rằng gợi ý 'NOLOCK' không được chấp nhận trong MSSQL 2012, được thay thế bằng gợi ý tương tự' READUNCOMMITTED' . [Nguồn] (http://msdn.microsoft.com/en-us/library/ms187373.aspx). – Jeroen
Nguồn được đề xuất cho biết - 'Hỗ trợ sử dụng các gợi ý READUNCOMMITTED và NOLOCK trong mệnh đề FROM áp dụng cho bảng mục tiêu của một câu lệnh UPDATE hoặc DELETE sẽ bị loại bỏ trong một phiên bản tương lai của SQL Server. '. Nó không nói rằng 'NOLOCK' bị phản đối. Hiện tại cả hai gợi ý 'NOLOCK' và' READUNCOMMITTED' đều có sẵn. – RBT