Nâng CaoDatabase iconDatabase

Database transactions là gì? Cách sử dụng trong SQL?

Transaction nhóm nhiều operations thành đơn vị atomic — giữ transactions ngắn, không làm I/O bên trong; deadlock tự detect và rollback một bên (retry cần thiết); savepoints cho partial rollback.

  • Transaction là nhóm operations thực hiện như một đơn vị atomic.
  • Cú pháp: BEGIN; UPDATE accounts SET balance = balance - 100 WHERE id = 1; UPDATE accounts SET balance = balance + 100 WHERE id = 2; COMMIT; — hoặc ROLLBACK nếu có lỗi.
  • Savepoints cho partial rollback: SAVEPOINT sp1; ... nếu lỗi ROLLBACK TO SAVEPOINT sp1; — có thể rollback về điểm giữa trong transaction mà không rollback toàn bộ, hữu ích trong stored procedures phức tạp.
  • Transaction log (WAL — Write-Ahead Log): PostgreSQL ghi changes vào WAL trước khi apply vào actual data files — đảm bảo durability và cho phép Point-in-Time Recovery.
  • Long-running transaction risks: giữ locks lâu dẫn đến lock escalation (row locks upgrade lên table lock), blocking other transactions, tăng replication lag, vacuum bị block trong PostgreSQL gây table bloat.
  • Deadlock detection: database tự detect deadlock (circular wait), kill một transaction và trả error 40P01 trong PostgreSQL — application phải retry.
  • Best practice: keep transactions ngắn, không làm I/O operations (HTTP calls, file reads) bên trong transaction.

Xem toàn bộ Database cùng filter theo level & chủ đề con.

Mở danh sách Database