2009-06-19 31 views
17

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

+2

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

+0

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

Trả lời

20

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.

+0

cảm ơn bạn đã xác nhận! – Jason

+0

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? –

6

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.

4

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.

+0

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. –

+0

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. –

1

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 ...

Các vấn đề liên quan