Quản lý giao dịch trong hệ quản trị cơ sở dữ liệu: Trạng thái, loại và ACID

⚡ Tóm tắt thông minh

Quản lý giao dịch cơ sở dữ liệu coi một hoặc nhiều thao tác cơ sở dữ liệu như một đơn vị logic duy nhất, chuyển cơ sở dữ liệu từ trạng thái nhất quán này sang trạng thái nhất quán khác. Nó dựa vào các thuộc tính ACID, trạng thái giao dịch được xác định và lịch trình để đảm bảo truy cập đồng thời chính xác.

  • 🔁 Đơn vị cốt lõi: Một giao dịch nhóm các thao tác đọc và ghi có liên quan lại với nhau sao cho chúng thành công hoặc thất bại cùng nhau, không bao giờ thất bại một phần.
  • 🧪 Thuộc tính AXIT: AtomTính chính xác, tính nhất quán, tính độc lập và tính bền vững đảm bảo kết quả chính xác ngay cả khi xảy ra lỗi hoặc sự cố đồng thời.
  • 🚦 Trạng thái giao dịch: Các trạng thái "đang hoạt động", "đã cam kết một phần", "đã cam kết", "thất bại" và "đã chấm dứt" mô tả vòng đời của một giao dịch.
  • 👥 Tại sao cần xử lý song song? Cơ sở dữ liệu được chia sẻ, vì vậy nhiều giao dịch được thực hiện đồng thời và không được làm hỏng dữ liệu của nhau.
  • 📋 Lịch trình: Lịch trình sắp xếp thứ tự các thao tác của các giao dịch song song trong khi vẫn bảo toàn trình tự nội bộ của mỗi giao dịch.
  • 🔗 Khả năng tuần tự hóa: Một lịch trình song song được coi là chính xác khi kết quả của nó bằng với một số quá trình thực thi tuần tự, được đánh giá bằng xung đột hoặc sự tương đương về quan điểm.
  • ↩️ Phục hồi: Giao dịch thất bại sẽ được hoàn tác để các thao tác ghi một phần của nó không bao giờ được ghi vào cơ sở dữ liệu đã cam kết.

Quản lý giao dịch trong hệ quản trị cơ sở dữ liệu (DBMS).

Giao dịch cơ sở dữ liệu là gì?

A Giao dịch cơ sở dữ liệu Giao dịch cơ sở dữ liệu là một đơn vị xử lý logic trong hệ quản trị cơ sở dữ liệu (DBMS), bao gồm một hoặc nhiều thao tác truy cập cơ sở dữ liệu. Nói tóm lại, giao dịch cơ sở dữ liệu thể hiện các sự kiện thực tế của bất kỳ doanh nghiệp nào.

Tất cả các loại thao tác truy cập cơ sở dữ liệu diễn ra giữa câu lệnh bắt đầu và kết thúc giao dịch đều được coi là một giao dịch logic duy nhất trong hệ quản trị cơ sở dữ liệu (DBMS). Trong suốt quá trình giao dịch, cơ sở dữ liệu không nhất quán. Chỉ khi giao dịch được cam kết thì trạng thái mới thay đổi từ trạng thái nhất quán này sang trạng thái nhất quán khác.

Giao dịch cơ sở dữ liệu di chuyển giữa các trạng thái nhất quán
Giao dịch cơ sở dữ liệu

Thông tin cơ bản về giao dịch cơ sở dữ liệu

  • Giao dịch là một đơn vị chương trình mà việc thực thi của nó có thể hoặc không thể thay đổi nội dung của cơ sở dữ liệu.
  • Khái niệm giao dịch trong DBMS được thực thi dưới dạng một đơn vị duy nhất.
  • Nếu các thao tác cơ sở dữ liệu không cập nhật cơ sở dữ liệu mà chỉ lấy dữ liệu thì loại giao dịch này được gọi là giao dịch chỉ đọc.
  • Một giao dịch thành công có thể thay đổi trạng thái cơ sở dữ liệu từ trạng thái NHẤT QUÁN này sang trạng thái NHẤT QUÁN khác.
  • Các giao dịch trong hệ quản trị cơ sở dữ liệu phải mang tính nguyên tử, nhất quán, độc lập và bền vững.
  • Nếu cơ sở dữ liệu ở trạng thái không nhất quán trước khi giao dịch, nó sẽ vẫn ở trạng thái không nhất quán sau giao dịch.

Tại sao cần có tính đồng thời trong các giao dịch?

Cơ sở dữ liệu là một tài nguyên dùng chung. Nó được nhiều người dùng và quy trình sử dụng đồng thời. Ví dụ bao gồm các hệ thống ngân hàng, hệ thống đặt vé tàu hỏa và hàng không, hệ thống giám sát thị trường chứng khoán, và hệ thống quản lý hàng tồn kho và thanh toán tại siêu thị.

Không quản lý quyền truy cập đồng thời có thể tạo ra các vấn đề như:

  • Lỗi phần cứng và sự cố hệ thống.
  • Thực hiện đồng thời cùng một giao dịch, bế tắchoặc hiệu năng chậm.

Việc kiểm soát quyền truy cập chung này là nhiệm vụ của đồng thời kiểm soátNó sử dụng cơ chế khóa và dấu thời gian để xen kẽ các giao dịch một cách an toàn. Trước đó, việc biết được các trạng thái mà một giao dịch trải qua là rất hữu ích.

Trạng thái giao dịch

Các trạng thái khác nhau của khái niệm giao dịch trong DBMS được liệt kê dưới đây:

Tiểu bang Mô tả Chi tiết
Trạng thái hoạt động Một giao dịch chuyển sang trạng thái hoạt động khi quá trình thực thi bắt đầu. Trong trạng thái này, các thao tác đọc hoặc ghi có thể được thực hiện.
Cam kết một phần Một giao dịch sẽ chuyển sang trạng thái "đã cam kết một phần" sau khi giao dịch kết thúc.
Trạng thái cam kết Khi giao dịch đạt đến trạng thái đã cam kết, nó đã hoàn tất quá trình thực thi thành công và tất cả các thay đổi của nó được ghi lại vĩnh viễn vào cơ sở dữ liệu.
Trạng thái không thành công Giao dịch được coi là thất bại khi bất kỳ bước kiểm tra nào không thành công, hoặc nếu giao dịch bị hủy bỏ trong khi đang ở trạng thái hoạt động.
Trạng thái chấm dứt Trạng thái của một giao dịch đạt đến trạng thái kết thúc khi giao dịch đó rời khỏi hệ thống và không thể khởi động lại.

Sơ đồ chuyển trạng thái cho một giao dịch cơ sở dữ liệu

Chúng ta hãy cùng nghiên cứu... sơ đồ chuyển trạng thái làm nổi bật cách giao dịch di chuyển giữa các trạng thái khác nhau này.

  1. Khi một giao dịch bắt đầu thực thi, nó sẽ trở nên hoạt động. Nó có thể thực hiện thao tác ĐỌC hoặc GHI.
  2. Sau khi các thao tác ĐỌC và GHI hoàn tất, giao dịch sẽ đạt đến trạng thái cam kết một phần.
  3. Tiếp theo, một số giao thức phục hồi cần đảm bảo rằng lỗi hệ thống sẽ không dẫn đến việc không thể ghi lại vĩnh viễn các thay đổi của giao dịch. Nếu kiểm tra này thành công, giao dịch sẽ được cam kết và chuyển sang trạng thái đã cam kết.
  4. Nếu quá trình kiểm tra thất bại, giao dịch sẽ chuyển sang trạng thái thất bại.
  5. Nếu giao dịch bị hủy bỏ khi đang ở trạng thái hoạt động, nó sẽ chuyển sang trạng thái thất bại. Giao dịch cần được hoàn tác để hủy bỏ tác động của các thao tác ghi vào cơ sở dữ liệu.
  6. Trạng thái kết thúc đề cập đến giao dịch rời khỏi hệ thống.

Tính chất của axit là gì?

Thuộc tính ACID được sử dụng để duy trì tính toàn vẹn của cơ sở dữ liệu trong quá trình xử lý giao dịch. ACID trong hệ quản trị cơ sở dữ liệu (DBMS) là viết tắt của... Asự tàn ác, Csự kiên trì, Isự an ủi, và Dkhả năng sử dụng.

  • Atombăng giá: Một giao dịch là một đơn vị hoạt động duy nhất. Bạn có thể thực hiện nó hoàn toàn hoặc không thực hiện nó chút nào. Không thể thực hiện một phần.
  • Tính nhất quán: Khi giao dịch được thực hiện, nó sẽ chuyển từ trạng thái nhất quán này sang trạng thái nhất quán khác.
  • Cô lập: Một giao dịch phải được thực hiện độc lập với các giao dịch khác. Trong quá trình thực hiện đồng thời, kết quả trung gian từ các giao dịch được thực hiện cùng lúc không được phép chia sẻ với nhau.
  • Bền Vững: Sau khi giao dịch hoàn tất thành công, các thay đổi trong cơ sở dữ liệu sẽ được lưu giữ, ngay cả trong trường hợp hệ thống gặp sự cố.

Thuộc tính ACID trong hệ quản trị cơ sở dữ liệu (DBMS) kèm ví dụ.

Dưới đây là một ví dụ về thuộc tính ACID trong hệ quản trị cơ sở dữ liệu (DBMS):

Transaction 1: Begin X=X+50, Y = Y-50 END
Transaction 2: Begin X=1.1*X, Y=1.1*Y END

Giao dịch 1 đang chuyển $50 từ tài khoản X sang tài khoản Y.

Giao dịch 2 đang ghi có vào mỗi tài khoản với khoản thanh toán lãi suất 10%.

Nếu cả hai giao dịch được gửi cùng lúc, không có gì đảm bảo rằng Giao dịch 1 sẽ được thực hiện trước Giao dịch 2 hoặc ngược lại. Bất kể thứ tự như thế nào, kết quả phải giống như thể các giao dịch diễn ra tuần tự, lần lượt từng cái một.

Các loại giao dịch

Dựa trên các lĩnh vực ứng dụng:

  • Không phân tán so với phân tán.
  • Các giao dịch bù trừ.
  • Thời gian giao dịch.
  • Xử lý trực tuyến so với xử lý theo lô.

Dựa trên các hành động:

  • Hai bước.
  • Hạn chế.
  • Mô hình hành động.

Dựa trên cấu trúc:

  • Giao dịch phẳng hoặc đơn giản: bao gồm một chuỗi các thao tác cơ bản được thực hiện giữa thao tác bắt đầu và thao tác kết thúc.
  • Giao dịch lồng nhau: một giao dịch chứa các giao dịch khác.
  • Quy trình làm việc.

Lịch trình là gì?

Lập lịch là một quy trình tạo ra một nhóm gồm nhiều giao dịch song song và thực thi chúng lần lượt từng cái một. Lịch trình phải bảo toàn thứ tự xuất hiện của các lệnh trong mỗi giao dịch. Nếu hai giao dịch được thực thi cùng một lúc, kết quả của giao dịch này có thể ảnh hưởng đến kết quả của giao dịch kia.

Ví dụ

Initial Product Quantity is 10
Transaction 1: Update Product Quantity to 50
Transaction 2: Read Product Quantity

Nếu Giao dịch 2 được thực hiện trước Giao dịch 1, thông tin lỗi thời về số lượng sản phẩm sẽ được đọc. Do đó, lịch trình là cần thiết.

Việc thực thi song song trong cơ sở dữ liệu là điều không thể tránh khỏi. Tuy nhiên, việc thực thi song song chỉ được cho phép khi có mối quan hệ tương đương giữa các giao dịch được thực thi đồng thời. Mối quan hệ tương đương này có ba loại.

Sự tương đương về kết quả: Nếu hai lịch trình cho ra cùng một kết quả sau khi thực thi, thì đó được gọi là lịch trình có kết quả tương đương. Chúng có thể cho cùng một kết quả đối với một số giá trị và các kết quả khác nhau đối với một tập hợp giá trị khác. Ví dụ, một giao dịch cập nhật số lượng sản phẩm trong khi giao dịch khác cập nhật thông tin chi tiết của khách hàng.

Xem sự tương đương: Hiện tượng tương đương về khung nhìn xảy ra khi các giao dịch trong cả hai lịch trình thực hiện một hành động tương tự. Ví dụ, một giao dịch chèn thông tin chi tiết sản phẩm vào bảng sản phẩm, trong khi một giao dịch khác chèn thông tin chi tiết sản phẩm vào bảng lưu trữ. Giao dịch là giống nhau, nhưng các bảng thì khác nhau.

Sự tương đương về xung đột: Trong trường hợp này, hai giao dịch cùng cập nhật hoặc xem một tập dữ liệu. Có sự xung đột giữa các giao dịch, vì thứ tự thực hiện sẽ ảnh hưởng đến kết quả đầu ra.

Khả năng tuần tự hóa là gì?

Tính tuần tự hóa là quá trình tìm kiếm một lịch trình đồng thời có đầu ra bằng với một lịch trình tuần tự trong đó các giao dịch được thực hiện lần lượt từng cái một. Tùy thuộc vào loại lịch trình, có hai loại tính tuần tự hóa:

  • Tính khả thi tuần tự của xung đột.
  • Xem khả năng tuần tự hóa.

Hai quan điểm này khác nhau về mức độ nghiêm ngặt trong việc đánh giá sự tương đương, như được tóm tắt dưới đây.

Yếu tố Tính tuần tự xung đột Xem khả năng tuần tự hóa
Cơ sở Thứ tự các thao tác xung đột Mối quan hệ giữa đọc từ và viết cuối cùng
Thử nghiệm Đồ thị thứ tự ưu tiên phải không có chu trình. Xem sự tương đương với lịch trình tuần tự
Nghiêm khắc Nghiêm ngặt hơn, một tập hợp con Rộng hơn, bao gồm cả những người viết mù
Chi phí kiểm tra Có hiệu quả Khó về mặt tính toán

Mọi lịch trình có thể tuần tự hóa xung đột đều có thể tuần tự hóa theo quan điểm, nhưng điều ngược lại thì không đúng, đó là lý do tại sao khả năng tuần tự hóa xung đột là bài kiểm tra thực tế mà hệ quản trị cơ sở dữ liệu áp dụng.

Câu Hỏi Thường Gặp

Lệnh `commit` làm cho các thay đổi của giao dịch được lưu trữ vĩnh viễn trong cơ sở dữ liệu. Lệnh `rollback` hoàn tác mọi thay đổi kể từ khi giao dịch bắt đầu, đưa cơ sở dữ liệu trở về trạng thái nhất quán tồn tại trước khi nó bắt đầu.

AtomTính nguyên tử. Nếu xảy ra sự cố giữa chừng, tính nguyên tử đảm bảo công việc chưa hoàn thành sẽ bị loại bỏ, do đó giao dịch được coi như chưa từng được thực hiện. Tính bền vững sau đó bảo vệ công việc đã được cam kết sau khi phục hồi.

Trí tuệ nhân tạo (AI) phân tích các biểu đồ chờ khóa và tắc nghẽn để phát hiện các giao dịch gây cản trở các giao dịch khác, sau đó đề xuất mức độ cách ly hoặc thay đổi chỉ mục nhằm giảm xung đột mà không làm suy yếu tính chính xác.

Ở một mức độ nào đó. Bằng cách tìm hiểu các mẫu yêu cầu khóa đã xảy ra trước các tình trạng tắc nghẽn, mô hình có thể sớm phát hiện sự kết hợp giao dịch rủi ro, cho phép bộ lập lịch trì hoãn hoặc sắp xếp lại trước khi một chu kỳ hình thành.

Lịch trình tuần tự thực hiện hoàn tất một giao dịch trước khi giao dịch tiếp theo bắt đầu, do đó không có sự xen kẽ nào có thể làm hỏng dữ liệu. Nó chậm, đó là lý do tại sao mục tiêu là một lịch trình đồng thời có thể tuần tự hóa theo nó.

Tóm tắt bài viết này với: