2011-02-08 33 views
12

Tôi có khoảng 6500 tệp với tổng số khoảng 17 GB dữ liệu và đây là lần đầu tiên tôi phải di chuyển những gì tôi sẽ gọi một lượng lớn dữ liệu. Dữ liệu nằm trên ổ đĩa mạng, nhưng các tệp riêng lẻ tương đối nhỏ (tối đa 7 MB).SQLBulkCopy hoặc Chèn số lượng lớn

Tôi đang viết một chương trình trong C# và tôi tự hỏi liệu tôi có nhận thấy sự khác biệt đáng kể về hiệu suất nếu tôi đã sử dụng BULK INSERT thay vì SQLBulkCopy hay không. Bảng trên máy chủ cũng có một cột phụ, vì vậy nếu tôi sử dụng BULK INSERT, tôi sẽ phải sử dụng một tệp định dạng và sau đó chạy một UPDATE cho mỗi hàng.

Tôi mới tham gia diễn đàn, vì vậy, nếu có cách nào tốt hơn để đặt câu hỏi này, vui lòng đề cập đến điều đó.

Trả lời

7

Bằng cách kiểm tra, SỐ LƯỢNG LỚN là nhiều hơn nhanh hơn. Sau một giờ sử dụng SQLBulkCopy, tôi có thể là một phần tư con đường thông qua dữ liệu của tôi, và tôi đã viết xong phương thức thay thế (và ăn trưa). Vào lúc tôi viết xong bài này (~ 3 phút), BULK INSERT là khoảng một phần ba con đường.

Đối với bất kỳ ai đang xem điều này làm tài liệu tham khảo, điều đáng nói là tải lên nhanh hơn mà không cần khóa chính. Cần lưu ý rằng một trong những nguyên nhân chính có thể là máy chủ là một máy tính mạnh hơn đáng kể, và đây không phải là phân tích hiệu quả của thuật toán, tuy nhiên tôi vẫn khuyên bạn nên sử dụng BULK INSERT , vì máy chủ trung bình có thể nhanh hơn đáng kể so với máy tính để bàn trung bình.

Các vấn đề liên quan