Tối ưu hóa hiệu suất BCP cho dữ liệu BLOB


13

Tôi đang trong quá trình lập kế hoạch di chuyển trực tiếp cơ sở dữ liệu 2TB sang các bảng được phân đoạn. Hệ thống nói chung là một cửa hàng tài liệu, phần lớn không gian được phân bổ cho các LOB trong khoảng từ 50kb đến 500kb, với một tỷ lệ nhỏ trong phạm vi 500kb đến 1MB. Một phần của việc di chuyển sẽ liên quan đến dữ liệu BCPing từ cơ sở dữ liệu cũ sang mới.

BCP là cách tiếp cận ưa thích vì sự phân chia hiện tại / lịch sử trong dữ liệu cho phép trích xuất dữ liệu cũ theo các giai đoạn (trong giai đoạn yên tĩnh hơn) trước khi chuyển đổi cuối cùng, giảm thiểu tác động lên hệ thống trực tiếp. Khối lượng dữ liệu và tính sẵn có của bộ lưu trữ ngăn chặn việc xây dựng lại tại chỗ thành sơ đồ phân vùng .

Tôi nghi ngờ có thể có một số hiệu suất đạt được bằng cách thử nghiệm với KILOBYTES_PER_BATCH thay vì ROWS_PER_BATCH, do nội dung BLOB. Nó được đề xuất trong tài liệu BCP rằng SQL có thể tối ưu hóa các hoạt động dựa trên giá trị này.

Những gì tôi không thể tìm thấy là bất kỳ hướng dẫn nào về bản chất của những tối ưu hóa này hoặc nơi bắt đầu thử nghiệm của tôi. Trong phạm vi đề xuất, tôi sẽ thử chạy ngắn ở ranh giới 4/8/16 / 64mb để bắt đầu.

Có lẽ một số lợi ích là từ việc thay đổi kích thước gói (tham số BCP -a, thay vì cài đặt cấp độ máy chủ) nhưng tôi có xu hướng tăng mức này lên tối đa 65535 trừ khi bất kỳ ai có cách tiếp cận công thức hơn.

Câu trả lời:


12

Đây không phải là câu trả lời trực tiếp cho câu hỏi của bạn, nhưng có một số bài viết mà bạn sẽ được hưởng lợi từ việc đọc chúng (trong trường hợp bạn không tìm thấy chúng trước :-)). Chúng là về việc tải rất nhiều dữ liệu bằng cách sử dụng bcp / bản sao số lượng lớn. Tôi đã đọc tất cả và tôi không tìm thấy bất cứ điều gì chi tiết về KILOBYTES_PER_BATCH, tất cả họ đều sử dụng ROWS_PER_BATCH, nhưng tôi chắc chắn bạn sẽ tìm thấy thông tin hữu ích khác.

và các tham chiếu MSDN rõ ràng:

Theo kinh nghiệm cá nhân của tôi, tôi đã thành công trong việc tạo tải dữ liệu nhanh bằng cách sử dụng tải song song và thử nghiệm với nhiều kích cỡ lô. Tôi đoán rằng chỉ có thử nghiệm cá nhân sẽ phù hợp với bạn. Hy vọng bạn sẽ tìm thấy một số lời khuyên tốt trong các tài liệu tham khảo.


Cảm ơn bạn, tôi đã đánh dấu một vài phát hiện mới từ danh sách đầy đủ đó. Là một nhiệm vụ một lần, nhiều bước tăng dần / tinh chỉnh không hữu ích nhưng có rất nhiều mẹo trong đó tôi có thể sử dụng.
Mark Storey-Smith

Đúng, tôi có cảm giác của bạn, đối với tôi cũng là một nhiệm vụ một lần, và tìm thấy một số công cụ hữu ích trong danh sách. Đó là một nhiệm vụ tuyệt vời mặc dù :-). Bạn cũng có thể thực hiện một ứng dụng .NET nhỏ (nếu bạn quen thuộc với .NET), như trong một bài viết khác từ Linchi Shea: Tác động hiệu suất: Tập lệnh chèn tối ưu nhất không thể đánh bại hàng loạt . Bạn có thể tìm thấy giống như anh ấy đã làm :-).
Mary

Vì dường như không có bất kỳ hướng dẫn cụ thể nào về BLOB cho BCP ngoài tự nhiên, tôi đánh dấu câu trả lời rất kỹ lưỡng của bạn là được chấp nhận. Cảm ơn một lần nữa.
Mark Storey-Smith

Xin lỗi tôi không thể giúp bạn nhiều hơn, nhưng tôi hy vọng bạn tìm thấy thứ gì đó hữu ích trong đó.
Mary
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.