Để tối đa hóa hiệu suất DB, các lệnh nào sẽ được chạy sau khi tải một lượng lớn dữ liệu vào SQL Server 2008 thông qua SSIS


11

Tôi đã viết một gói SSIS để tải dữ liệu thử nghiệm vào cơ sở dữ liệu trống. Một số bảng rất lớn (~ 700 triệu hàng). Khi gói SSIS đã hoàn thành, có bất kỳ lệnh nào tôi nên chạy (với tư cách là một DBA tập sự!) Để tối đa hóa hiệu suất của cơ sở dữ liệu?

Ví dụ, tôi đã thực thi EXEC sp_updatestatsnhưng nó báo cáo rằng không có chỉ mục nào cần cập nhật.

Có một danh sách những việc cần làm sau khi một lượng lớn dữ liệu đã được tải hay SQL Server 2008 chỉ chăm sóc tất cả những thứ đó cho bạn?

Câu trả lời:


8

Nếu bạn đang tải vào cơ sở dữ liệu trống, bạn có thể / nên thực hiện các bước để tránh yêu cầu bất kỳ bước bảo trì bổ sung nào sau khi tải. Phân mảnh là kẻ thù, đó là những gì bạn đang cố gắng tránh.

  • Thả tất cả các chỉ số NC trước khi tải.
  • Tải bài, thêm các chỉ mục NC cho từng bảng theo thứ tự, nghĩa là không thêm chỉ mục vào TableA, sau đó là TableB, sau đó quay lại TableA. Điều này không có tác dụng đối với sự phân mảnh nhưng nó có thể cải thiện thời gian cần thiết để thêm các chỉ mục trên các bộ dữ liệu rất lớn (giảm khuấy đảo vùng đệm).
  • Nếu bạn có thể chèn dữ liệu vào một bảng theo thứ tự chỉ mục được nhóm, hãy để lại chỉ mục được nhóm. Nếu bạn không thể, hãy đổ dữ liệu thành một đống và xây dựng lại thành một tải bài chỉ mục được nhóm.

Thay vì sao chép và dán, tôi sẽ hướng bạn đến danh sách các tài liệu tham khảo rất toàn diện để tối ưu hóa ETL @Marian đưa ra câu trả lời cho câu hỏi tôi đã hỏi trên BCP . Nhiều trong số này sẽ được áp dụng như nhau cho kịch bản của bạn.


2
Thật thú vị, trên liên kết đến các video từ SQLCAT và SSIS, phát hiện của họ không bao giờ bỏ chỉ số NC. Đoán đây là một trường hợp khác của "nó phụ thuộc"
billinkc

2
@billinkc không phải là để tăng tải, mà là cơ sở dữ liệu trống mà câu hỏi này đề cập quá? Dù bằng cách nào, kiểm tra SQLCAT có xu hướng liên quan đến một lớp phần cứng hiếm thấy trong các tổ chức điển hình.
Mark Storey-Smith

5

Nó phụ thuộc vào số lượng cửa sổ bạn có nhưng nói chung việc cập nhật số liệu thống kê và xây dựng lại / sắp xếp lại các chỉ mục là một bước tốt để thực hiện. Ngoài ra, bạn không cần phải làm gì khác.

Các thống kê cho biết trình tối ưu hóa truy vấn có bao nhiêu hàng có khả năng bị ảnh hưởng bởi một hoạt động và điều đó sẽ cho SQL biết cách tiếp cận nào cần thực hiện để chạy các truy vấn của bạn. Chèn dữ liệu có thể làm lệch phân phối và nếu bạn chưa chèn đủ hàng để kích hoạt cập nhật thống kê trong chế độ cập nhật tự động, thì hướng dẫn sử dụng sẽ giúp ích. Nếu bạn có cửa sổ, tôi nói giữ phần cập nhật thống kê.

Các chỉ mục có thể bị phân mảnh khi dữ liệu được thêm vào. Xây dựng lại hoặc sắp xếp lại giúp giảm điều này có thể dẫn đến hiệu suất được cải thiện khi thực sự truy cập dữ liệu của bạn.


4
Dọc theo các Chỉ mục, trong một trong các video SSIS của SQLCAT , họ cũng đề xuất một quy tắc rằng nếu tăng trưởng dữ liệu của bạn> 100% và có một NCI duy nhất, hãy thả và tạo lại chúng. Nếu nó hơn 10% và có hơn 2 NCI, thả và tạo lại sẽ mang lại hiệu suất tốt hơn.
billinkc

2
Chỉ cần làm rõ nhận xét của Bill - Tôi nghĩ rằng anh ta đang nói rằng đề xuất là dành cho những lần thả để tạo ra chúng có nghĩa là Chỉ số thả, Thực hiện tải dữ liệu của bạn, sau đó Tái tạo chỉ mục của bạn .. Thay vì để các chỉ mục ở đó trong quá trình tải và xây dựng lại sau. Dù sao tôi cũng nghĩ vậy :-) và vâng, điểm tuyệt vời, tôi +1 bình luận đó.
Mike Walsh
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.