Logo InterData
  • Trang chủ
  • Blog
    • Máy chủ (Server)
    • Máy chủ ảo (VPS)
    • Cloud Server
    • Web Hosting
    • Website
    • Trí tuệ nhân tạo (AI)
    • Lập trình
  • Dịch vụ
    • Thuê chỗ đặt máy chủ
    • Thuê Cloud Server
    • Thuê Hosting
    • Thuê máy chủ
    • Thuê VPS
  • Sự kiện
  • Khuyến Mãi
  • Trang chủ
  • Blog
    • Máy chủ (Server)
    • Máy chủ ảo (VPS)
    • Cloud Server
    • Web Hosting
    • Website
    • Trí tuệ nhân tạo (AI)
    • Lập trình
  • Dịch vụ
    • Thuê chỗ đặt máy chủ
    • Thuê Cloud Server
    • Thuê Hosting
    • Thuê máy chủ
    • Thuê VPS
  • Sự kiện
  • Khuyến Mãi
Trang Chủ Lập trình

Transaction là gì? Toàn tập về các lệnh giao tác trong SQL

Mỹ Y Được viết bởi Mỹ Y
A A

NỘI DUNG

Toggle
  • Transaction là gì?
  • Tại sao nên sử dụng Transaction?
  • Các thuộc tính cốt lõi của Transaction
    • A - Atomicity (Tính nguyên tử)
    • C - Consistency (Tính nhất quán)
    • I - Isolation (Tính cô lập)
    • D - Durability (Tính bền vững)
  • Các lệnh điều khiển Transaction trong SQL
    • COMMIT trong SQL
    • ROLLBACK trong SQL
    • SAVEPOINT trong SQL
    • RELEASE SAVEPOINT trong SQL
    • Lệnh SET TRANSACTION
  • Các loại Transaction trong SQL
  • Các trường hợp sử dụng Transaction phổ biến
  • Cách thực hành để quản lý giao dịch SQL hiệu quả

Trong cơ sở dữ liệu, Transaction (giao tác) đóng vai trò quan trọng giúp đảm bảo dữ liệu luôn nhất quán, an toàn và đáng tin cậy – ngay cả khi có lỗi xảy ra trong quá trình xử lý. Vậy Transaction là gì, tại sao lại quan trọng trong hệ quản trị cơ sở dữ liệu như SQL? Trong bài viết này, InterData sẽ giúp bạn hiểu rõ về Transaction, các thuộc tính cốt lõi, các lệnh điều khiển giao tác trong SQL và cách sử dụng hiệu quả trong thực tế. Đây là nền tảng quan trọng để phát triển các hệ thống dữ liệu mạnh mẽ, ổn định và an toàn.

Transaction là gì?

Giao tác (Transaction) trong SQL được định nghĩa là một đơn vị làm việc logic duy nhất, bao gồm một hoặc nhiều lệnh SQL được nhóm lại với nhau để thực hiện một nhiệm vụ cụ thể.

Điều quan trọng là toàn bộ các câu lệnh trong một giao tác phải được thực hiện thành công cùng nhau (commit) hoặc nếu có bất kỳ lỗi nào xảy ra, toàn bộ các thay đổi phải được hủy bỏ (rollback) để đưa cơ sở dữ liệu về trạng thái trước khi giao tác bắt đầu.

Transaction là gì?
Transaction là gì?

Tại sao nên sử dụng Transaction?

Lợi ích của Transaction là gì? Sử dụng Transaction khi bạn phải xử lý nhiều nhóm câu lệnh. Trong một transaction, tất cả các câu lệnh trong chuỗi phải thực hiện thành công thì dữ liệu liên quan mới được lưu vào cơ sở dữ liệu. Nếu có bất kỳ thành phần nào trong transaction bị lỗi, hệ thống sẽ thực hiện hoàn tác (rollback).

Việc sử dụng transaction cũng rất hữu ích trong việc bảo vệ dữ liệu khỏi các tình huống gây lỗi cho cơ sở dữ liệu, chẳng hạn như mất điện, máy chủ gặp sự cố, hỏng ổ đĩa, hoặc phần mềm cơ sở dữ liệu bị crash.

Trong các tình huống này, nếu có các transaction chưa được commit, thì tính toàn vẹn của cơ sở dữ liệu vẫn được đảm bảo. Nếu không có transaction, bất kỳ câu lệnh riêng lẻ nào đã thực thi sẽ vẫn tồn tại trong cơ sở dữ liệu, bất kể các câu lệnh liên quan có được thực hiện hay không. Điều này có thể dẫn đến sự cố về tính toàn vẹn của dữ liệu.

Các thuộc tính cốt lõi của Transaction

Để một Giao tác được coi là đáng tin cậy và thực hiện đúng vai trò của mình trong việc bảo vệ dữ liệu, nó phải tuân thủ bốn thuộc tính cốt lõi. Bốn thuộc tính này thường được viết tắt là ACID:

XEM THÊM:  12+ Các Trang Web Dạy Lập Trình Miễn Phí Tốt Nhất (Có Lộ Trình Cho Người Mới Bắt Đầu)

A – Atomicity (Tính nguyên tử)

Atomicity là một giao tác được coi là một đơn vị không thể chia nhỏ. Toàn bộ các thao tác trong giao tác phải được hoàn thành hoặc không có thao tác nào được thực hiện.

Nghĩa là, chỉ khi tất cả các lệnh trong Giao tác được thực thi thành công, thì toàn bộ thay đổi mới được áp dụng vào cơ sở dữ liệu. Ngược lại, nếu bất kỳ lệnh nào thất bại, toàn bộ Giao tác sẽ bị hủy bỏ (rollback).

Bạn có thể hình dung Atomicity giống như việc bạn gửi một bức thư: hoặc nó được gửi đi nguyên vẹn với đầy đủ nội dung, hoặc nó không được gửi đi chút nào. Không có trường hợp bức thư bị gửi đi một phần. Điều này cực kỳ quan trọng để tránh dữ liệu bị dở dang hoặc không hoàn chỉnh.

Ví dụ: Chuyển tiền từ tài khoản A sang tài khoản B. Giao tác bao gồm (1) Trừ tiền từ A, (2) Cộng tiền vào B. Nếu bước (1) thành công nhưng bước (2) thất bại, tính nguyên tử yêu cầu bước (1) cũng phải bị hủy bỏ.

Các thuộc tính cốt lõi của Transaction
Các thuộc tính cốt lõi của Transaction

C – Consistency (Tính nhất quán)

Consistency đảm bảo rằng mỗi Giao tác sẽ đưa cơ sở dữ liệu từ một trạng thái hợp lệ (nhất quán) sang một trạng thái hợp lệ khác. Nó duy trì các quy tắc và ràng buộc đã được định nghĩa trên cấu trúc cơ sở dữ liệu.

Điều này có nghĩa là giao tác sẽ không làm vi phạm bất kỳ ràng buộc toàn vẹn dữ liệu nào (như khóa chính, khóa ngoại, các ràng buộc kiểm tra – CHECK constraints) hoặc các quy tắc nghiệp vụ đã được cài đặt trong cơ sở dữ liệu.

Mỗi thay đổi do giao tác mang lại đều phải tuân thủ các luật của cơ sở dữ liệu. Nếu một giao tác cố gắng thực hiện một thao tác vi phạm các luật này (ví dụ: chèn một bản ghi trùng khóa chính), Giao tác đó sẽ bị thất bại và hủy bỏ để giữ cho cơ sở dữ liệu luôn ở trạng thái nhất quán.

Ví dụ: Tổng số dư của tất cả tài khoản ngân hàng trước và sau một giao tác chuyển tiền phải không đổi (trừ phí nếu có). Giao tác không thể làm cho tổng số dư bị sai lệch so với quy tắc kinh doanh.

I – Isolation (Tính cô lập)

Isolation đảm bảo rằng các Giao tác thực thi đồng thời (nhiều người dùng cùng truy cập và thay đổi dữ liệu) không gây ảnh hưởng hay làm gián đoạn lẫn nhau. Đối với mỗi Giao tác, nó hoạt động như thể nó là Giao tác duy nhất đang chạy trên hệ thống.

Mục đích chính của Isolation là để ngăn chặn các vấn đề phổ biến trong môi trường đa người dùng như đọc dữ liệu chưa được commit (Dirty Read), đọc dữ liệu bị thay đổi trong cùng một Giao tác (Non-repeatable Read) hoặc sự xuất hiện của các bản ghi mới không mong muốn (Phantom Read).

XEM THÊM:  HTTP Response là gì? Vai trò & Cấu trúc của Response nên biết

Ví dụ: Hai người cùng lúc đọc số dư của tài khoản A. Nếu một giao tác khác đang chuyển tiền vào tài khoản A, tính cô lập đảm bảo cả hai người đọc sẽ thấy số dư trước khi giao tác chuyển tiền hoàn tất, hoặc sau khi nó hoàn tất, chứ không phải một giá trị trung gian không chính xác.

D – Durability (Tính bền vững)

Durability là lời hứa cuối cùng và rất quan trọng của Giao tác. Nó đảm bảo rằng một khi một Giao tác đã được “cam kết” (commit) thành công, những thay đổi mà nó thực hiện sẽ là vĩnh viễn.

Điều này có nghĩa là các thay đổi đã commit sẽ không bị mất đi ngay cả khi hệ thống gặp phải các sự cố nghiêm trọng sau đó, ví dụ như mất điện đột ngột, hệ thống bị sập (crash), hoặc lỗi phần cứng. Dữ liệu đã được lưu trữ an toàn.

Để đạt được tính bền vững, các hệ quản trị CSDL thường sử dụng cơ chế nhật ký giao tác(Transaction Log). Mọi thay đổi của Giao tác thường được ghi vào nhật ký này trên bộ nhớ bền vững (ổ cứng) trước khi Giao tác được xác nhận là ‘commit’ hoàn toàn.

Nhật ký giao tác này cho phép hệ thống phục hồi lại trạng thái dữ liệu cuối cùng đã được commit sau khi xảy ra sự cố. Khi hệ thống khởi động lại, nó sẽ “replay” (phát lại) các Giao tác đã được ghi trong nhật ký nhưng chưa kịp áp dụng đầy đủ vào file dữ liệu chính, đảm bảo không mất mát dữ liệu đã commit.

Ví dụ: Sau khi giao tác chuyển tiền được commit, số dư mới trong các tài khoản phải được lưu trữ an toàn. Nếu máy chủ gặp sự cố ngay sau khi commit, khi khởi động lại, hệ thống phải có khả năng phục hồi các thay đổi đã commit này dựa trên Transaction Log.

Sau khi hiểu Transaction là gì và 4 thuộc tính cốt lõi, hãy cùng tìm hiểu về các lệnh điều khiển Transaction trong SQL ngay dưới đây nhé!

Các lệnh điều khiển Transaction trong SQL

Trong SQL, các lệnh sau được sử dụng để điều khiển Transaction:

  • COMMIT: COMMIT dùng để lưu các thay đổi.
  • ROLLBACK: ROLLBACK giúp quay lại trạng thái trước khi có thay đổi.
  • SAVEPOINT: SAVEPOINT tạo các điểm (point) bên trong nhóm Transaction để có thể ROLLBACK quay trở lại trạng thái tại điểm đó.
  • SET TRANSACTION: SET TRANSACTION đặt tên cho một Transaction.

Các lệnh điều khiển Transaction chỉ áp dụng với các lệnh thao tác dữ liệu như INSERT, UPDATE, DELETE. Tuy nhiên, chúng không thể áp dụng cho các lệnh như CREATE TABLE hoặc DROP TABLE, bởi vì những hoạt động này được hệ quản trị cơ sở dữ liệu xử lý tự động.

Các lệnh điều khiển Transaction trong SQL
Các lệnh điều khiển Transaction trong SQL

COMMIT trong SQL

Lệnh COMMIT được sử dụng để lưu lại tất cả các thay đổi được thực hiện trong một Transaction vào cơ sở dữ liệu, tính từ thời điểm thực thi COMMIT hoặc ROLLBACK gần nhất.

XEM THÊM:  Seaborn là gì? Các hàm vẽ biểu đồ trong Seaborn (Python)

Cú pháp:

COMMIT;

ROLLBACK trong SQL

Lệnh ROLLBACK có tác dụng hoàn tác tất cả các thay đổi trong Transaction mà chưa được lưu vào cơ sở dữ liệu, kể từ khi COMMIT hoặc ROLLBACK gần nhất được thực hiện.

Cú pháp:

ROLLBACK;

SAVEPOINT trong SQL

SAVEPOINTcho phép bạn đánh dấu một điểm cụ thể trong Transaction để có thể quay lại điểm đó nếu cần thiết, thay vì phải quay lại toàn bộ trạng thái ban đầu của Transaction. Lệnh này được sử dụng để tạo các điểm phục hồi trong quá trình thực thi Transaction.

Cú pháp:

SAVEPOINT TEN_SAVEPOINT;

Cú pháp cuộn lại một SAVEPOINT:

ROLLBACK TO SAVEPOINT_NAME;

RELEASE SAVEPOINT trong SQL

Lệnh RELEASE SAVEPOINT được sử dụng để loại bỏ một điểm SAVEPOINT đã được tạo trước đó.

Cú pháp:

RELEASE SAVEPOINT TEN_SAVEPOINT;

Ví dụ: Một khi điểm lưu SP2 được giải phóng, chúng ta không thể quay lại điểm đó nữa.

RELEASE SAVEPOINT SP2; -- Release the second savepoint.

Lệnh SET TRANSACTION

Lệnh SET TRANSACTION có vai trò bắt đầu một Transaction trong cơ sở dữ liệu. Nó được sử dụng để chỉ định các đặc tính cụ thể của Transaction sẽ được thực hiện.

Cú pháp:

SET TRANSACTION [ READ WRITE | READ ONLY ];

Các loại Transaction trong SQL

Dựa vào bản chất và thao tác cụ thể, Transaction trong SQL được chia thành nhiều loại:

  • Đọc giao dịch: chỉ thực hiện truy vấn dữ liệu, thường sử dụng lệnh SELECT.
  • Ghi giao dịch: bao gồm các thao tác thay đổi dữ liệu như INSERT, UPDATE, hoặc DELETE.
  • Giao dịch phân tán: là loại giao dịch thực hiện trên nhiều cơ sở dữ liệu khác nhau, đảm bảo tính nhất quán giữa các hệ thống.
  • Giao dịch ngầm định: được hệ quản trị cơ sở dữ liệu (ví dụ SQL Server) khởi tạo tự động cho một số thao tác nhất định.
  • Giao dịch rõ ràng: được người dùng kiểm soát thủ công bằng các lệnh BEGIN TRANSACTION, COMMIT và ROLLBACK.

Các trường hợp sử dụng Transaction phổ biến

  • Chuyển tiền giữa các tài khoản ngân hàng.
  •  Quản lý hàng tồn kho cập nhật đơn hàng trực tuyến liên quan đến nhiều bảng.
  •  Xử lý hàng loạt để thực hiện Cập nhật hàng loạt hoặc Chèn dữ liệu.
  •  Các hoạt động quan trọng của hệ thống như cập nhật cấu hình, cài đặt hoặc giao dịch để duy trì tính nhất quán của trạng thái hệ thống.
  • Nhiệm vụ dọn dẹp và bảo trì dữ liệu và ngăn chặn cập nhật một phần bằng cách khôi phục tất cả các thay đổi.
Các trường hợp sử dụng Transaction phổ biến
Các trường hợp sử dụng Transaction phổ biến

Cách thực hành để quản lý giao dịch SQL hiệu quả

Mặc dù các giao dịch SQL rất mạnh mẽ, nhưng chúng cần được quản lý cẩn thận để đảm bảo hiệu suất tối ưu và tránh các vấn đề như chặn giao dịch và khóa không cần thiết. Sau đây là một số biện pháp thực hành tốt nhất:

  • Giữ các giao dịch ngắn : Tránh các giao dịch chạy dài vì chúng có thể khóa các bảng và làm giảm tính đồng thời.
  • Sử dụng chỉ mục thích hợp : Việc lập chỉ mục thích hợp trên các bảng liên quan đến giao dịch có thể cải thiện hiệu suất đáng kể.
  • Tránh chặn giao dịch : Đảm bảo các giao dịch không chặn những giao dịch khác một cách không cần thiết, gây ra sự chậm trễ.
  • Cam kết sớm : Cố gắng cam kết ngay khi giao dịch hoàn tất để giải phóng tài nguyên.

Hiểu và ứng dụng đúng Transaction trong SQL chính là chìa khóa để xây dựng hệ thống cơ sở dữ liệu an toàn, toàn vẹn và dễ bảo trì. Từ việc nắm rõ các thuộc tính ACID cho đến cách sử dụng các lệnh như COMMIT, ROLLBACK hay SAVEPOINT, bạn hoàn toàn có thể kiểm soát được luồng dữ liệu và đảm bảo chất lượng hệ thống.

Nếu bạn đang học cách kiểm soát giao tác trong SQL hay muốn thử nghiệm hệ thống database độc lập, dịch vụ VPS Linux tại InterData là lựa chọn phù hợp. Với cấu hình mạnh mẽ từ chip Intel Xeon, ổ SSD NVMe U.2 tốc độ cao, lưu trữ linh hoạt, băng thông không giới hạn, giá chỉ từ 95K/tháng, bạn dễ dàng triển khai, kiểm thử hoặc vận hành các truy vấn SQL một cách chủ động và ổn định.

Share188Tweet118
KHUYẾN MÃI NỔI BẬT
VPS Summer Fest 2025
VPS Summer Fest chỉ từ 66K/tháng – Gia Hạn Giá KHÔNG ĐỔI
BÀI VIẾT MỚI NHẤT
VPS Summer Fest 2025
VPS Summer Fest chỉ từ 66K/tháng – Gia Hạn Giá KHÔNG ĐỔI
Cách Cloud Server hoạt động
Cloud Server Hoạt Động Như Thế Nào? (Giải Thích A-Z)
Cloud Server
Cloud Server là gì? Giải thích toàn tập về máy chủ đám mây
Các trang web dạy lập trình miễn phí
12+ Các Trang Web Dạy Lập Trình Miễn Phí Tốt Nhất (Có Lộ Trình Cho Người Mới Bắt Đầu)
Các Thuật Ngữ Trong Lập Trình Web
38+ Các Thuật Ngữ Trong Lập Trình Web Thông Dụng Mà Bạn Nên Biết
Nên chọn CentOS, Ubuntu hay Debian cho VPS Linux
Nên chọn CentOS, Ubuntu hay Debian cho VPS Linux? (So sánh chi tiết 2025)
Xcode là gì, Tính năng, lợi ích & Cách sử dụng Xcode
Xcode là gì? Tính năng, lợi ích & Cách sử dụng Xcode
Xamarin là gì, A-Z về framework nền tảng di động đa nền tảng
Xamarin là gì? A-Z về framework nền tảng di động đa nền tảng
Flutter là gì, Ưu điểm & Ứng dụng của framework Flutter
Flutter là gì? Ưu điểm & Ứng dụng của framework Flutter

logo interdata

VPĐD: 240 Nguyễn Đình Chính, P.11. Q. Phú Nhuận, TP. Hồ Chí Minh
VPGD: 211 Đường số 5, Lakeview City, An Phú, Thủ Đức, TP. Hồ Chí Minh
MST: 0316918910 – Cấp ngày 28/06/2021 – tại Sở KH và ĐT TP. HCM
Mã ĐDKD: 0001
Điện thoại: 1900.636822
Website: Interdata.vn

DỊCH VỤ

Thuê chỗ đặt máy chủ
Thuê Cloud Server
Thuê Hosting
Thuê máy chủ
Thuê VPS

THÔNG TIN

Blog
Giới thiệu
Liên hệ
Khuyến mãi
Sự kiện

CHÍNH SÁCH

Chính sách bảo hành
Chính sách bảo mật
Chính sách xử lý khiếu nại
Cam kết dịch vụ
Điều khoản sử dụng
GDPR
Hình thức thanh toán
Hướng dẫn thanh toán trên VNPAY
Quy định đổi trả và hoàn trả tiền
Quy định sử dụng tên miền