Biện minh KHÔNG sử dụng gợi ý (nolock) trong mọi truy vấn


23

Bạn đã bao giờ phải biện minh KHÔNG sử dụng một gợi ý truy vấn?

Tôi đang thấy WITH (NOLOCK)trong mỗi truy vấn duy nhất truy cập vào một máy chủ rất bận rộn. Theo mặc định, các nhà phát triển nghĩ rằng nó chỉ nên được bật theo mặc định vì họ ghét nhìn thấy nó trong mã của họ hàng ngàn lần.

Tôi đã cố gắng giải thích rằng nó cho phép đọc bẩn và cuối cùng họ sẽ có dữ liệu xấu, nhưng họ tin rằng sự đánh đổi hiệu suất là rất xứng đáng. (Cơ sở dữ liệu của họ là một mớ hỗn độn; không có gì ngạc nhiên khi họ có vấn đề về hiệu suất.)

Nếu bạn có một ví dụ rõ ràng về cách trình bày trường hợp chống lại sự lạm dụng NOLOCKgợi ý này, điều đó sẽ được đánh giá cao.

Câu trả lời:


17

Bạn chọn các trận chiến và trận chiến như thế này không thể dễ dàng chiến thắng. Chúng tôi có một hệ thống trong đó mọi DML được gợi ý với gợi ý ROWLOCK (không phân biệt sửa đổi một hàng hoặc vài nghìn hàng). Tôi đã chỉ ra một số ví dụ tại sao nó thực sự làm tổn thương hiệu năng nhưng vì hệ thống đã hoạt động, có khả năng chống lại sự thay đổi. Lưu ý rằng tôi đã thuyết phục họ đủ KHÔNG sử dụng điều này trong tương lai.

NOLOCK có vị trí nhưng tôi có thể đề xuất một số tài liệu tham khảo tốt cho thấy những rắc rối khi sử dụng nó:



9

Bạn phải giải thích cho các đồng nghiệp về tầm quan trọng của việc hiểu các mức cô lập. Cho họ xem ví dụ. Lời giải thích đẹp nhất và dễ nhất tôi tìm thấy trên poster về mức độ cô lập của Little Kendra . Hỏi họ tại sao họ nghĩ rằng họ cần gợi ý nolock. Tại sao họ không sử dụng câu lệnh "thiết lập mức cô lập giao dịch ..."? Hỏi chính xác tình huống họ muốn khắc phục là gì, có thể họ gặp bế tắc, chặn..v.v. Nếu họ không muốn giữ ổ khóa, họ có thể xem xét mức cô lập ảnh chụp nhanh.

Chỉ bằng cách hỏi họ bạn có thể có một hình ảnh rõ ràng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.