Tôi đang thử nghiệm tốc độ chèn nhiều hàng với một câu lệnh INSERT duy nhất.Nhiều hàng với một INSERT duy nhất trong SQLServer 2008
Ví dụ: INSERT INTO [MyTable] GIÁ TRỊ (5, 'chó'), (6, 'mèo'), (3, 'cá)
này rất nhanh cho đến khi tôi vượt qua 50 hàng trên một tuyên bố duy nhất, sau đó tốc độ giảm đáng kể.
Chèn 10.000 hàng với các lô 50 mất 0,9 giây. Chèn 10.000 hàng với các lô 51 mất 5,7 giây.
Câu hỏi của tôi có hai phần:
- Tại sao lại có sự sụt giảm hiệu suất cứng ở 50?
- Tôi có thể dựa vào hành vi này và viết mã ứng dụng của mình để không bao giờ gửi các lô lớn hơn 50 không?
Thử nghiệm của tôi được thực hiện bằng C++ và ADO.
Chỉnh sửa: Dường như điểm thả không phải là 50 hàng, nhưng 1000 cột. Tôi nhận được kết quả tương tự với 50 hàng 20 cột hoặc 100 hàng của 10 cột.
tôi có cảm giác rằng nó trở nên tồi tệ hơn do phân tích cú pháp đầu vào. – Andrey
Hoàn thành và tổng số đoán hoang dã: ít hơn 50 hàng được lưu trữ trong bộ nhớ RAM của SQL Server, nhưng chèn lớn hơn được coi là "quan trọng" hơn và được ghi ra đĩa ngay lập tức? Trung thực không chắc chắn (Do đó bình luận thay vì trả lời) –