Avatar
1
Han Beginner
Han Beginner
MySQL insert batch or insert single with multithread in JAVA
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ự ạ?
  • Answer
java mysql
Remain: 5
2 Answers
Avatar
hovanvydut Beginner
hovanvydut Beginner
Quan tâm ạ. Em bình luận đây để nhận notify
  • 0
  • Reply
Avatar
tvd12 Beginner
tvd12 Beginner
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êng

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ự ạ?

đú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é

  • 1
  • Reply
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 ạ !

 –  Han 1628908107000
Đúng rồi, song song nếu khác transaction em ạ  –  tvd12 1628924513000