Tôi sử dụng SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
trong phần lớn các truy vấn SQL chung của mình, chủ yếu là vì điều này đã được khoan vào tôi khi ban đầu học ngôn ngữ.
Theo hiểu biết của tôi, mức độ cô lập này hoạt động theo cách tương tự mà WITH (NO LOCK)
tôi chỉ có xu hướng sử dụng SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
.
- Có bao giờ tôi nên sử dụng
WITH (NO LOCK)
hơnSET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
. - Có
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
ngăn người dùng khác bị khóa khỏi các bảng mà tôi đang đọc không? - Nếu
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
được sử dụng để dừng khóa, nhưng tôi chỉ đọc dữ liệu, điểm quan trọng trong việc sử dụng nó là gì? Có phải chỉ các hệ thống truy vấn chuyên sâu sẽ tạo ra các khóa? Có đáng để sử dụng nó khi chạy các truy vấn sẽ trả về trong 5-10 giây không? - Tôi đã nói không sử dụng
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
khi đọc dữ liệu sẽ được sử dụng trong các bản cập nhật, có lẽ để tránh cập nhật dữ liệu bẩn. Đây sẽ là lý do duy nhất? - Với loại cơ sở dữ liệu mà tôi đang làm việc, có một môi trường sản xuất và thử nghiệm. Chúng tôi sẽ rất hiếm khi truy vấn môi trường sản xuất nhưng khi tôi cần, tôi thường sẽ sử dụng
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
trong truy vấn của mình. Tôi hiểu rằng đọc bẩn là có thể với điều này. Ngoài việc nhận lại dữ liệu mà cuối cùng có thể không được cam kết với cơ sở dữ liệu (và do đó ném kết quả của tôi ra) những loại 'đọc bẩn' nào khác có thể có thể?
Xin lỗi cho các câu hỏi đại chúng.
READ UNCOMMITTED
ở khắp mọi nơi, trong cùng một cách chính xác như tôi sẽ không sử dụng WITH (NOLOCK)
ở khắp mọi nơi (họ cơ bản là điều tương tự) blogs.sqlsentry.com/aaronbertrand/bad-habits-nolock-everywhere