Tôi có cơ sở dữ liệu trong sản xuất với một bảng đã phát triển rất lớn (nhiều dữ liệu tích lũy).Cách tốt nhất để triển khai chỉ mục mới vào bảng rất lớn trong SQL Server 2008
Để cải thiện hiệu suất truy vấn, tôi đã sử dụng trình tối ưu hóa máy chủ sql đã đề xuất một chỉ mục mới.
Vì vậy, tôi đã sao chép cơ sở dữ liệu sản xuất để kiểm tra và cải thiện hiệu suất, tuy nhiên vấn đề của tôi là mất khoảng 24 giờ để tạo chỉ mục và trong khi chỉ mục đang được tạo thì ứng dụng không thể sử dụng được.
Đối với ứng dụng cụ thể này, giảm một vài giờ không phải là vấn đề nhưng thời gian ngừng hoạt động là 24 giờ và tôi đang tìm cách tạo chỉ mục này mà không phải thực hiện điều đó.
Tôi chỉ có một vài ý tưởng vào lúc này.
Một ý tưởng là sao chép bản sao lưu sang máy chủ khác. Áp dụng chỉ mục mới và bất kỳ thay đổi nào khác. Sao chép bản sao lưu trở lại máy chủ sản xuất. Đưa ứng dụng xuống và hợp nhất trên bất kỳ dữ liệu mới nào kể từ khi tôi thực hiện sao lưu.
Tất nhiên điều này có bộ vấn đề riêng của mình như phải hợp nhất dữ liệu lại với nhau vì vậy tôi không thích ý tưởng này vì lý do đó.
Đây là tiêu chuẩn chuẩn SQL Server 2008 Ed.
Tôi thường triển khai các thay đổi cơ sở dữ liệu theo tập lệnh.
CẬP NHẬT: Một ý tưởng khác là di chuyển dữ liệu lưu trữ ra khỏi bảng chính trong vài ngày theo khối. Sau đó tạo chỉ mục khi bảng đủ nhỏ. Sau đó, từ từ di chuyển dữ liệu trở lại.
Không quan tâm, cài đặt maxdop nào là máy chủ và ghi đè lên maxdop (nếu có) bạn đã chỉ định khi tạo chỉ mục? – Andrew
MDOP được đặt thành 0 và tôi không chỉ định bất kỳ điều gì khác trong lệnh tạo chỉ mục. Máy chủ này đang chạy như một cá thể VMWare và được cấu hình với 1 bộ xử lý. Tôi biết đó không phải là tối ưu nhưng nó là những gì nó được. Nếu tôi có thể nói chắc chắn rằng nó sẽ hoàn thành chỉ số trong X khoảng thời gian sớm hơn tôi có thể tạm thời có số lượng CPU tăng lên. – Zack
1 proc, do đó, 1 chủ đề, giải thích một số tiền nhất định của vấn đề, và phần còn lại sẽ không nghi ngờ gì là thông lượng I/O rất kém. – Andrew