Transaction là gì? Tìm hiểu Transaction trong Database từ A-Z Phần 1

Transaction là gì? Tìm hiểu Transaction trong Database từ A-Z Phần 1

Transaction là gì? Tìm hiểu Transaction trong Database từ A-Z Phần 1

Trong thế giới Database hiện đại, từ website bán hàng, CRM, ERP, LMS, ngân hàng, ví điện tử cho tới AI Chatbot, một khái niệm cực kỳ quan trọng mà lập trình viên và quản trị hệ thống thường xuyên gặp phải chính là Transaction.

Transaction giúp đảm bảo dữ liệu luôn chính xác, nhất quán và không bị sai lệch khi nhiều thao tác diễn ra đồng thời hoặc khi hệ thống gặp sự cố.

Nếu không có Transaction, một giao dịch chuyển tiền có thể bị mất tiền, một đơn hàng có thể bị tạo nhưng không trừ tồn kho hoặc một bài nộp trên LMS có thể lưu không đầy đủ.

1. Transaction là gì?

Transaction là một nhóm các thao tác Database được thực hiện như một đơn vị xử lý hoàn chỉnh.

Một Transaction có thể bao gồm:

  • INSERT dữ liệu.
  • UPDATE dữ liệu.
  • DELETE dữ liệu.
  • SELECT dữ liệu.
  • Gọi Stored Procedure.
  • Ghi log hệ thống.

Điểm quan trọng nhất là:

  • Hoặc tất cả thao tác thành công.
  • Hoặc tất cả thao tác bị hủy bỏ.

Không tồn tại trạng thái thực hiện một nửa.

Note: Transaction là nền tảng giúp Database đảm bảo dữ liệu luôn chính xác và nhất quán.

2. Tại sao Database cần Transaction?

Hãy tưởng tượng hệ thống ngân hàng có hai tài khoản:

  • Tài khoản A: 10.000.000 VNĐ
  • Tài khoản B: 5.000.000 VNĐ

Người dùng thực hiện chuyển:

1.000.000 VNĐ từ A sang B.

Quá trình này gồm:

  1. Trừ 1.000.000 VNĐ từ A.
  2. Cộng 1.000.000 VNĐ vào B.
  3. Ghi log giao dịch.

Nếu hệ thống gặp lỗi sau khi trừ tiền A nhưng chưa cộng tiền B thì chuyện gì xảy ra?

  • Tài khoản A mất tiền.
  • Tài khoản B không nhận được tiền.
  • Dữ liệu sai hoàn toàn.

Transaction được tạo ra để giải quyết vấn đề này.

Warning: Hầu hết các lỗi nghiêm trọng trong hệ thống ERP, CRM, LMS, thương mại điện tử và ngân hàng đều liên quan đến Transaction được thiết kế không đúng.

3. Các thành phần của Transaction

Một Transaction thường trải qua các bước:

Bước Mô tả
BEGIN Bắt đầu Transaction
SQL Statements Thực hiện các thao tác dữ liệu
COMMIT Xác nhận thay đổi
ROLLBACK Hủy toàn bộ thay đổi

Ví dụ:

BEGIN;

UPDATE accounts
SET balance = balance - 1000000
WHERE account_id = 'A';

UPDATE accounts
SET balance = balance + 1000000
WHERE account_id = 'B';

COMMIT;

Khi COMMIT thành công, dữ liệu được lưu chính thức vào Database.

4. Commit và Rollback là gì?

Commit

Commit là hành động xác nhận tất cả thay đổi trong Transaction.

COMMIT;

Sau khi Commit:

  • Dữ liệu được lưu chính thức.
  • Không thể rollback về trạng thái cũ.
  • Các user khác nhìn thấy dữ liệu mới.

Rollback

Rollback là hành động hủy toàn bộ thay đổi trong Transaction.

ROLLBACK;

Sau Rollback:

  • Database trở về trạng thái trước Transaction.
  • Không có dữ liệu dở dang.
  • Đảm bảo tính toàn vẹn dữ liệu.

5. Transaction và ACID

Transaction hoạt động dựa trên nguyên tắc ACID:

Thành phần Ý nghĩa
Atomicity Tất cả hoặc không gì cả
Consistency Dữ liệu luôn hợp lệ
Isolation Các Transaction không ảnh hưởng sai lệch lẫn nhau
Durability Dữ liệu đã Commit sẽ không bị mất

ACID là nền tảng giúp Transaction hoạt động an toàn trong các hệ quản trị Database hiện đại.

6. Ví dụ thực tế về Transaction

Ví dụ 1: Website thương mại điện tử

Khi khách hàng đặt hàng:

  • Tạo Order.
  • Trừ tồn kho.
  • Ghi thanh toán.
  • Gửi email xác nhận.

Nếu bước thứ 2 lỗi nhưng bước thứ 1 thành công:

  • Đơn hàng tồn tại.
  • Tồn kho không giảm.
  • Dữ liệu sai.

Transaction sẽ rollback toàn bộ quy trình.

Ví dụ 2: Canvas LMS

Sinh viên nộp bài:

  • Lưu file.
  • Ghi submission.
  • Cập nhật trạng thái.
  • Thông báo giáo viên.

Nếu một bước thất bại, Transaction giúp hệ thống không lưu trạng thái nửa chừng.

BÀI VIẾT CÙNG CHUYÊN MỤC

CẢNH BÁO BẢO MẬT: Lỗ Hổng Nghiêm Trọng CVE-2026-42533 Trên NGINX – Cập Nhật Ngay Để Tránh Rủi Ro Bị Tấn Công
CẢNH BÁO BẢO MẬT: Lỗ Hổng Nghiêm Trọng CVE-2026-42533 ...

CẢNH BÁO BẢO MẬT: Lỗ Hổng Nghiêm Trọng CVE-2026-42533 Trên NGINX – Cập Nhật ...

BACKUP DỮ LIỆU LỚN TỪ LINUX UBUNTU 24.04 LTS LÊN GOOGLE DRIVE AN TOÀN, TỐI ƯU BĂNG THÔNG
BACKUP DỮ LIỆU LỚN TỪ LINUX UBUNTU 24.04 LTS LÊN ...

BACKUP DỮ LIỆU LỚN TỪ LINUX UBUNTU 24.04 LTS LÊN GOOGLE DRIVE AN TOÀN, TỐI ƯU ...

Top 5 hệ thống LMS tốt nhất năm 2026 – Giải pháp quản lý học tập hiện đại cho trường học và doanh nghiệp
Top 5 hệ thống LMS tốt nhất năm 2026 – Giải pháp quản ...

Top 5 hệ thống LMS tốt nhất năm 2026 – Giải pháp quản lý học tập hiện đại cho ...

Hướng dẫn cấu hình SSL Let's Encrypt nhiều Website IIS bằng Win-ACME (Windows Server 2025)
Hướng dẫn cấu hình SSL Let's Encrypt nhiều Website IIS ...

Hướng dẫn cấu hình SSL Let's Encrypt nhiều Website IIS bằng Win-ACME (Windows ...

Hướng Dẫn Sửa Lỗi Không Extend Được Ổ C Trên Windows Server 2025 Do Vướng Phân Vùng Recovery
Hướng Dẫn Sửa Lỗi Không Extend Được Ổ C Trên Windows ...

Hướng Dẫn Sửa Lỗi Không Extend Được Ổ C Trên Windows Server 2025 Do Vướng Phân ...

Cảnh Báo Đỏ: Chiến Dịch FortiBleed Rò Rỉ Hàng Chục Nghìn Thông Tin Quản Trị Tường Lửa Fortinet
Cảnh Báo Đỏ: Chiến Dịch FortiBleed Rò Rỉ Hàng Chục ...

Cảnh Báo Đỏ: Chiến Dịch FortiBleed Rò Rỉ Hàng Chục Nghìn Thông Tin Quản Trị ...