Tôi có nên xây dựng lại chỉ mục sau khi cắt / chèn lớn?


10

Tôi có một quy trình được lưu trữ để cắt bớt một số bảng với khoảng 1,75M mỗi hàng, trước khi chèn dữ liệu mới (dựa trên dữ liệu trong các bảng khác, tính toán, v.v.)

Phác thảo cơ bản rất đơn giản:

  • Bàn cắt
  • Chèn 1,75M hàng vào 'lô' khoảng 75.000 mỗi lần.

Tôi tự hỏi liệu tôi có nên xây dựng lại các chỉ mục bất cứ lúc nào trong quá trình này không? ví dụ

  • Bàn cắt
  • ALTER INDEX ALL ON xxx REBUILD WITH (FILLFACTOR=90) [hoặc một cái gì đó tương tự]
  • Chèn 1,75M hàng

hoặc có lẽ

  • ALTER INDEX ALL ON xxx DISABLE
  • Bàn cắt
  • Chèn 1,75M hàng
  • ALTER INDEX ALL ON xxx REBUILD WITH (FILLFACTOR=90) [hoặc một cái gì đó tương tự]

Bất kỳ trợ giúp nào cũng đánh giá cao ... không phải là một DBA - một Dev biết khá rõ DB là chính xác hơn!


Một số thông tin khác về cấu trúc bảng, các chỉ mục đang tồn tại ngày nay và giao diện của dữ liệu được chèn vào (nó có theo một thứ tự nhất định không? Điều đó có phù hợp với chỉ mục được nhóm không?) Sẽ giúp ích. Ngoài ra tôi cho rằng bảng này không có sẵn cho đến khi quá trình này được thực hiện? Đó là điều tốt để biết có các tùy chọn để nhập số lượng lớn.
Mike Walsh

Có lẽ bạn nên cắt bớt bảng chèn vào đó và xem xét phân mảnh chỉ mục của bạn để xem bạn có cần hay không.
Zane

v: Tiêu chuẩn 2008. Dữ liệu nguồn là nhiều bảng phân tầng, trước khi dữ liệu này tải từ csv, excel, Oracle và các db SQL khác. Các cấu trúc bảng đều giống hệt nhau ở giai đoạn này: 6 char ID, 3 char char, 10 cols thập phân (20,5). Khóa chính là ID + Code. Dữ liệu được tải qua insert intovà tại thời điểm này không có order bymệnh đề, nhưng tôi có thể thêm rằng nếu nó sẽ giúp? ID và Code cũng được lập chỉ mục riêng.
BlueChippy

Câu trả lời:


6

Như với hầu hết các câu hỏi của loại này, nó phụ thuộc. Không chắc là bạn sẽ chèn dữ liệu theo thứ tự "chính xác" cho tất cả các chỉ mục có liên quan, điều đó có nghĩa là tất cả các chỉ mục đó có thể gặp phải nhiều sự phân tách trang trong quá trình chèn. Vì vậy, hãy giả sử rằng bạn đang chèn theo thứ tự chỉ mục cụm. Bạn có thể vô hiệu hóa tất cả các chỉ mục không được nhóm, cắt ngắn, thực hiện thao tác chèn của bạn và sau đó xây dựng lại tất cả các chỉ mục không được phân cụm. Tất nhiên, thử cả hai cách tiếp cận sẽ cho bạn biết sự thật nhanh hơn bất kể lý thuyết đằng sau nó. :)


1

Plan Basic với tất cả các chỉ mục được kích hoạt có thể chậm và có thể dẫn đến phân mảnh.

THAY ĐỔI INDEX REBUILD trên một bảng bị cắt cụt và do đó không có mục đích, vì vậy bạn cần sửa đổi Kế hoạch của mình A. Nó phải là:

  • TRUNCATE
  • Chèn
  • THAY ĐỔI INDEX

Nó có thể sẽ chậm, nhưng ít nhất bạn có được chỉ số sắc nét.

Kế hoạch B là tốt. Kiểm tra cả ba và xem cái nào nhanh nhất và cái nào cho phân mảnh chỉ số ít nhất. Sau đó quyết định nếu xây dựng lại là giá trị nó.

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.