Chào mọi người, hiện em đang là sv năm 3 IT của 1 trường đh tại Hà Nội và đang học java và mysql.
Em có một câu hỏi mong mọi người có thể giải đáp ạ.
- Khi insert 1 list bàn ghi vào DB thì giữa việc sử dụng 1 luồng với batch insert và sử dụng multi thread của java để insert từng bản ghi một, cái nào sẽ có performance tốt hơn ạ ?
- Nếu insert cùng 1 lúc nhiều bản ghi như vậy vào cùng 1 table có id auto increase thì DB sẽ xử lý insert tuần tự ạ?
Hi em, anh xin trả lời như sau:
Khi insert 1 list bàn ghi vào DB thì giữa việc sử dụng 1 luồng với batch insert và sử dụng multi thread của java để insert từng bản ghi một, cái nào sẽ có performance tốt hơn ạ ?
* chắc chắn dùng batch tốt hơn em ạ, vì mỗi câu lệnh insert thường sẽ phải dùng câu lệnh
SELECT 1
để kiểm tra có kết nối không với server, nên nó sẽ lâu hơn 1 chút, chưa kể việc insert thường sẽ phải đi song hành với transaction. Tuy nhiên trong nhiều ứng dụng để đảm bảo chắc chắn dữ liệu đã được ghi thành công vào cơ sở dữ liệu thì người ta vẫn insert từng cái 1, vì ghi theo batch thường là phải sử dụng 1 luồng riêngNếu insert cùng 1 lúc nhiều bản ghi như vậy vào cùng 1 table có id auto increase thì DB sẽ xử lý insert tuần tự ạ?
* đúng như vậy em ạ
Nhớ là đừng quên sử dụng connection pool khi làm viêc với các sql server em nhé
Dạ em cảm ơn a ạ, Vậy a cho em xin hỏi thêm 1 câu nữa là:
– Khi em sử dụng multithread của java để thực hiện thao tác với DB thì DB sẽ xử lý song song các tác vụ hay sẽ xử lý tuần tự ạ. Ví dụ: Thread A insert table A, Thread B insert vào table B, thì việc insert vào 2 table này sẽ là đồng thời hay tuần tự ở dưới DB ạ?
Em cảm ơn a nhiều ạ !
Đúng rồi, song song nếu khác transaction em ạ
Quan tâm ạ. Em bình luận đây để nhận notify