Giao dịch cơ sở dữ liệu

Bách khoa toàn thư mở Wikipedia
Bước tới: menu, tìm kiếm

Giao dịch cơ sở dữ liệu (database transaction) là đơn vị tương tác của một hệ quản lý cơ sở dữ liệu hoặc các hệ tương tự, mỗi giao dịch được xử lý một cách nhất quán và tin cậy mà không phụ thuộc vào các giao dịch khác. Một hệ cơ sở dữ liệu lý tưởng sẽ phải bảo đảm toàn bộ các tính chất ACID cho mỗi giao dịch. Trên thực tế, các tính chất này thường được nới lỏng để giúp việc thực thi đạt hiệu quả hơn.

Trong các sản phẩm cơ sở dữ liệu, khả năng xử lý được các giao dịch cho phép người dùng đảm bảo duy trì được tính toàn vẹn của một cơ sở dữ liệu.

Mỗi giao dịch có thể cần vài câu truy vấn, mỗi câu sẽ đọc và/hay viết thông tin trong cơ sở dữ liệu. Khi thực hiện các câu truy vấn phải bảo đảm là cơ sở dữ liệu chỉ được tác động bởi một số câu truy vấn. Chẳng hạn như, khi thực hiện một giao dịch chuyển tiền, nếu như tiền đã bị trừ đi trong một tài khoản thì bắt buộc phải cộng vào khoản tương ứng trong tài khoản tiền gửi kia. Ngoài ra các giao dịch cũng không được can thiệp vào nhau. Xem ACID để có thêm thông tin về các tính chất giao dịch cần thiết.

Một giao dịch đơn giản thông thường được gửi đến hệ cơ sở dữ liệu bằng ngôn ngữ như SQL dưới dạng:

  1. Bắt đầu giao dịch
  2. Thực hiện các câu truy vấn (trong lúc đó bên ngoài vẫn chưa thấy được những cập nhật đối với cơ sở dữ liệu)
  3. Xác nhận giao dịch (bên ngoài thấy được cập nhật đối với cơ sở dữ liệu nếu giao dịch thành công)

Nếu giao dịch không thành công ở một điểm nào đó trước khi đến giai đoạn "xác nhận" (commit), hệ cơ sở dữ liệu sẽ hủy (rollback) mọi thay đổi. Tất cả các giao dịch khác sẽ coi như là giao dịch kia chưa hề tồn tại. Một giao dịch có thể được hủy bất kỳ thời điểm nào trước khi chính thức được xác nhận.

Cơ sở dữ liệu giao dịch[sửa | sửa mã nguồn]

Các cơ sở dữ liệu hỗ trợ giao dịch được gọi là cơ sở dữ liệu giao dịch. Hầu hết các cơ sở dữ liệu hiện nay (như FireBird, Mimer SQL, PostgreSQL, MySQL, Microsoft SQL ServerOracle) đều thuộc vào loại này.

Xem thêm[sửa | sửa mã nguồn]

Liên kết ngoài[sửa | sửa mã nguồn]