Avatar
0
Nguyễn Thái Sơn Professional
Nguyễn Thái Sơn Professional
deadlock thực tế
Hôm trước em có bài toán Transaction bị deadlock nhưng lần này em chia sẻ cụ thể hơn

Ở cùng 1 thời điểm, có 2 transaction A và B xảy ra đồng thời

A sẽ update record có id = 1 ở bảng user sau đó update record có id = 2 ở bảng address

B sẽ update record có id = 2 ở bảng address và update record có id = 1 ở bảng user

Vậy là deadlock, để tránh thì đơn giản em sẽ quy ước trong Transaction gọi bảng nào trước bảng nào để tránh deadlock, nhưng như vậy quá khó vì 1 hệ thống có trăm bảng, không thế nhớ hết như vậy được. Nếu là anh, anh sẽ làm gì

  • Answer
database transaction deadlock
Remain: 5
1 Answer
Avatar
tvd12 Professional
tvd12 Professional
Trên thực tế thì khi em xử lý transaction với các DBMS hiện nay thì sẽ không có chuyện gặp deadlock theo kiểu này, vì họ đã đảm bảo 1 trong 4 tính chất ACID rồi:

Tính cô lập (Isolation). Một giao dịch đang thực thi và chưa được xác nhận phải bảo đảm tách biệt khỏi các giao dịch khác.

Vậy nên em có thể thoải mái gọi theo bất cứ thứ tự nào mà em muốn nhé.

  • 1
  • Reply