Tôi muốn chèn n bản ghi vào một bảng duy nhất. Có thể có nhiều người dùng đồng thời và họ có thể chèn/cập nhật/chọn dữ liệu từ bảng này. Cách tốt nhất để chèn vào bảng như vậy là 1000 bản ghi:Hiệu suất truy vấn chèn Sql
- Gửi một truy vấn sql đơn lẻ đến cơ sở dữ liệu với nhiều lần chèn. Điều này tiết kiệm máy chủ cho các cuộc gọi cơ sở dữ liệu, nhưng (tôi không chắc chắn) khóa bảng cho đến khi chèn xong và tất cả các truy vấn khác vào bảng này sẽ đợi.
- Chia 1000 bản ghi trong một số đoạn và gửi chúng trong nhiều truy vấn sql. Điều này cho phép các truy vấn khác được thực thi trên bảng, nhưng dành thời gian trên máy chủ cho các cuộc gọi cơ sở dữ liệu.
Điều này có phụ thuộc vào thứ gì đó hay có một cách duy nhất luôn là cách tối ưu? Điều này có phụ thuộc vào việc các giao dịch có được sử dụng hay không, trong khi chèn dữ liệu? Có cách nào khác tốt hơn để thực hiện chèn như vậy không?
Cơ sở dữ liệu tôi sử dụng là MS SQL, nhưng nó thú vị như thế nào nó hoạt động trong DB khác như Oracle.
bài đăng blog thú vị +1. Nó khơi gợi sự quan tâm của tôi đối với các giao dịch _reason_ xuất hiện nhanh hơn trong thử nghiệm của bạn. Tôi nghi ngờ đó là bởi vì nhiều khóa cần thiết đã được thực hiện bằng cách vượt qua trước. Tuy nhiên, điều quan trọng nhất là bài đăng của bạn không giải quyết được hành vi đang tải. Các thử nghiệm của bạn dường như bị cô lập; trong một hệ thống sống tôi nghi ngờ kết quả sẽ đảo ngược khá nhanh chóng. – EBarr