Cập nhật ngày 23 tháng 4 năm 2015
Năm ngoái, tôi đã tổng hợp một chuỗi các bài đăng nhằm mục đích xem xét chi tiết về tính đồng thời, thuộc tính ACID của các câu lệnh và giao dịch cũng như từng cấp độ cô lập chính trong SQL Server. Bây giờ tôi đã kết thúc loạt bài này với một bài đăng cuối cùng về mức độ cô lập được sử dụng có chủ đích phổ biến nhất:đọc không cam kết ("NOLOCK").
Thuộc tính ACID của bảng sao kê &giao dịch |
Mức cô lập có thể nối tiếp hóa |
Mức cô lập khi đọc lặp lại |
Mức cô lập cam kết đã đọc |
Đọc cô lập ảnh chụp nhanh đã cam kết |
Sửa đổi dữ liệu trong phần Cách ly ảnh chụp nhanh đã cam kết đọc |
Mức cô lập SNAPSHOT |
Mức cô lập đã đọc |
Vì bạn đã kiên nhẫn cho phần cuối cùng, nên có một số cách đọc / xem nền khác khi đọc không cam kết mà tôi có thể cung cấp:
- Lubor Kollar:Các hàng đã cam kết trước đây có thể bị bỏ lỡ nếu sử dụng gợi ý NOLOCK
- Aaron Bertrand:Thói quen xấu:Đặt NOLOCK ở mọi nơi
- Craig Freedman:Truy vấn thất bại với Đọc không được chấp nhận
- Aaron Bertrand:Tránh sử dụng NOLOCK trên SQL Server UPDATE và DELETE các câu lệnh
- David Lean:Gợi ý NOLOCK của SQL Server và các ý tưởng kém cỏi khác
- Sunil Agarwal:Dòng Concurrency:Tại sao tôi bị chặn khi sử dụng mức cách ly Đọc không được chấp nhận hoặc sử dụng gợi ý NOLOCK?
- Tony Rogerson:Quả bom hẹn giờ - Vấn đề nhất quán với NOLOCK / READ UNCOMMITTED (và phần tiếp theo)