Tạo một chỉ mục trên một bảng thực sự bận rộn


11

Chúng tôi có một bảng với rất nhiều insert\selectlần (như 100 máy đang chèn \ cập nhật mỗi giây).

Cách tốt nhất để tạo một chỉ mục trên một bảng không thể bị khóa thậm chí không trong một giây là gì?

Nếu tôi tạo chỉ mục, tôi chắc chắn nó sẽ khóa các yêu cầu và tôi không thể thực hiện được.

Đó là một bàn lớn với 1 triệu hàng +.

Câu trả lời:


12

Không có tùy chọn nào như CREATE INDEX WITH (NOLOCK)(và ngay cả NOLOCKtrên một truy vấn có khóa, chỉ cần ít hơn không có gợi ý).

Điều tốt nhất bạn sẽ làm là WITH (ONLINE = ON), vẫn giữ khóa ở đầu và cuối hoạt động (cả hai đều liên quan đến việc biên dịch lại các kế hoạch liên quan đến bảng - xem bài đăng trên blog này của Paul Randal để biết thêm chi tiết ).

Điều này sẽ làm giảm đáng kể tác động của việc xây dựng chỉ mục trên các ứng dụng của bạn, nhưng không có cách nào thực tế để loại bỏ hoàn toàn tác động đó. Ngoài ra, tính năng này không miễn phí: nó yêu cầu Phiên bản doanh nghiệp.

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.