1) Có , một lựa chọn với NOLOCK
sẽ hoàn thành nhanh hơn so với lựa chọn bình thường.
2) Có , một lựa chọn với NOLOCK
sẽ cho phép các truy vấn khác đối với bảng được thực hiện hoàn thành nhanh hơn so với lựa chọn thông thường.
Tại sao điều này sẽ được?
NOLOCK
thông thường (tùy thuộc vào công cụ DB của bạn) có nghĩa là cung cấp cho tôi dữ liệu của bạn và tôi không quan tâm nó đang ở trạng thái nào và đừng bận tâm giữ nó trong khi bạn đọc từ đó. Tất cả cùng một lúc nhanh hơn, ít tốn tài nguyên hơn và rất nguy hiểm.
Bạn nên được cảnh báo không bao giờ thực hiện cập nhật từ hoặc thực hiện bất kỳ điều gì quan trọng của hệ thống hoặc khi yêu cầu tính chính xác tuyệt đối khi sử dụng dữ liệu có nguồn gốc từ một lần NOLOCK
đọc. Hoàn toàn có thể là dữ liệu này chứa các hàng đã bị xóa trong quá trình chạy truy vấn hoặc đã bị xóa trong các phiên khác chưa được hoàn thành. Có thể dữ liệu này bao gồm các hàng đã được cập nhật một phần. Có thể dữ liệu này chứa các bản ghi vi phạm các ràng buộc khóa ngoại. Có thể dữ liệu này loại trừ các hàng đã được thêm vào bảng nhưng chưa được cam kết.
Bạn thực sự không có cách nào để biết trạng thái của dữ liệu là gì.
Nếu bạn đang cố gắng để có được những thứ như Đếm hàng hoặc dữ liệu tóm tắt khác trong đó có thể chấp nhận được một số lỗi, thì đó NOLOCK
là cách tốt để tăng hiệu suất cho các truy vấn này và tránh để chúng ảnh hưởng tiêu cực đến hiệu suất cơ sở dữ liệu.
Luôn luôn sử dụng NOLOCK
gợi ý một cách thận trọng và xử lý mọi dữ liệu mà nó trả lại một cách đáng ngờ.