Kiểm soát đồng thời trong hệ quản trị cơ sở dữ liệu: Khóa và các giao thức dựa trên dấu thời gian

⚡ Tóm tắt thông minh

Kiểm soát đồng thời trong hệ quản trị cơ sở dữ liệu (DBMS) quản lý các giao dịch đồng thời để chúng chạy chính xác mà không vi phạm tính toàn vẹn dữ liệu. Nó ngăn ngừa các bất thường như mất cập nhật và đọc dữ liệu không nhất quán bằng cách sử dụng các giao thức dựa trên khóa, hai pha, dựa trên dấu thời gian và dựa trên xác thực, đảm bảo kết quả có thể tuần tự hóa.

  • 👥 Mục đích cốt lõi: Kiểm soát đồng thời cho phép nhiều giao dịch truy cập dữ liệu được chia sẻ cùng một lúc trong khi vẫn duy trì...ping Cơ sở dữ liệu nhất quán.
  • ⚠️ Các bất thường đã được ngăn chặn: Bốn vấn đề mà nó giải quyết bao gồm: mất bản cập nhật, đọc dữ liệu không chính xác, đọc dữ liệu không lặp lại và tóm tắt sai.
  • 🔒 Dựa trên khóa: Khóa chia sẻ và khóa độc quyền kiểm soát việc người khác có thể đọc hoặc ghi một mục dữ liệu hay không.
  • 🔁 Khóa hai pha: Giai đoạn tăng trưởng thu nhận các khóa và giai đoạn thu hẹp giải phóng chúng, điều này đảm bảo tính tuần tự hóa.
  • 🇧🇷 Dựa trên dấu thời gian: Các giao dịch cũ hơn được ưu tiên, thứ tự xử lý các thao tác xung đột được sắp xếp theo dấu thời gian của hệ thống.
  • Dựa trên xác thực: Chế độ kiểm soát lạc quan hoạt động trên các bản sao cục bộ, chỉ xác thực trước giai đoạn ghi.
  • 🎯 Mục tiêu: Khả năng xử lý đồng thời tối đa với chi phí tối thiểu, khả năng chống chịu lỗi hệ thống và lỗi liên lạc.

Cơ chế khóa và lập lịch theo dấu thời gian trong hệ quản trị cơ sở dữ liệu (DBMS).

Kiểm soát đồng thời là gì?

Đồng thời kiểm soát Trong Hệ Quản Trị Cơ Sở (DMS), đồng thời là một quy trình quản lý các thao tác đồng thời mà không xung đột với nhau. Nó đảm bảo các giao dịch cơ sở dữ liệu được thực hiện đồng thời và chính xác để tạo ra kết quả đúng mà không vi phạm tính toàn vẹn dữ liệu của cơ sở dữ liệu tương ứng.

Việc truy cập đồng thời khá dễ dàng nếu tất cả người dùng chỉ đọc dữ liệu, vì không có cách nào họ có thể can thiệp vào nhau. Tuy nhiên, bất kỳ cơ sở dữ liệu thực tế nào cũng có sự kết hợp giữa các thao tác ĐỌC và GHI, do đó, việc xử lý đồng thời trở thành một thách thức.

Cơ chế kiểm soát đồng thời của hệ quản trị cơ sở dữ liệu (DBMS) được sử dụng để giải quyết các xung đột như vậy, chủ yếu xảy ra trong hệ thống đa người dùng. Do đó, kiểm soát đồng thời là một trong những yếu tố quan trọng nhất đối với hoạt động đúng đắn của cơ sở dữ liệu khi hai hoặc nhiều giao dịch được thực thi đồng thời và yêu cầu truy cập vào cùng một dữ liệu. Nó hoạt động song hành với... quản lý giao dịch, trong đó xác định các đơn vị công việc mà cơ chế kiểm soát đồng thời phải xen kẽ một cách an toàn.

Các vấn đề tiềm ẩn của xử lý đồng thời

Dưới đây là một số vấn đề bạn có thể gặp phải nếu không có cơ chế kiểm soát đồng thời phù hợp trong hệ quản trị cơ sở dữ liệu:

  • Cập nhật bị mất Xảy ra khi nhiều giao dịch cùng chọn một hàng và cập nhật hàng đó dựa trên giá trị được chọn.
  • Sự phụ thuộc chưa được cam kết (Đọc dữ liệu chưa được xác nhận) xảy ra khi một giao dịch thứ hai chọn một hàng đã được cập nhật bởi một giao dịch khác chưa được cam kết.
  • Đọc không lặp lại Lỗi này xảy ra khi một giao dịch thứ hai truy cập cùng một hàng nhiều lần và đọc các dữ liệu khác nhau mỗi lần.
  • Tóm tắt không chính xác Lỗi này xảy ra khi một giao dịch lấy tổng giá trị của tất cả các trường hợp của một mục dữ liệu lặp lại, trong khi một giao dịch khác cập nhật một vài trường hợp đó. Kết quả tổng hợp thu được không phản ánh kết quả chính xác.

Tại sao nên sử dụng phương pháp xử lý song song?

Lý do sử dụng phương pháp kiểm soát đồng thời trong hệ quản trị cơ sở dữ liệu:

  • Áp dụng biện pháp cách ly thông qua loại trừ lẫn nhau giữa các giao dịch xung đột.
  • Để giải quyết các vấn đề xung đột đọc-ghi và ghi-ghi.
  • Để duy trì tính nhất quán của cơ sở dữ liệu bằng cách liên tục thực thi các ràng buộc thực thi.
  • Để kiểm soát sự tương tác giữa các giao dịch đồng thời, điều này được thực hiện bằng cách sử dụng các lược đồ kiểm soát đồng thời.
  • Để giúp đảm bảo tính tuần tự hóa.

Ví dụ

Giả sử có hai người cùng đến các ki-ốt điện tử để mua vé xem phim cho cùng một bộ phim và cùng một suất chiếu.

Tuy nhiên, chỉ còn một chỗ ngồi duy nhất cho suất chiếu đó trong rạp. Nếu không có cơ chế kiểm soát đồng thời, cả hai người xem phim đều có thể mua vé. Cơ chế kiểm soát đồng thời ngăn chặn điều này. Cả hai người xem phim vẫn có thể truy cập thông tin trong cơ sở dữ liệu chỗ ngồi của rạp chiếu phim, nhưng cơ chế kiểm soát đồng thời chỉ cung cấp vé cho người mua hoàn tất quá trình giao dịch trước.

Giao thức kiểm soát đồng thời

Các giao thức kiểm soát đồng thời khác nhau đưa ra những sự đánh đổi khác nhau giữa mức độ đồng thời mà chúng cho phép và chi phí phát sinh. Các kỹ thuật kiểm soát đồng thời chính trong hệ quản trị cơ sở dữ liệu (DBMS) là:

  • Giao thức dựa trên khóa
  • Giao thức khóa hai pha
  • Giao thức dựa trên dấu thời gian
  • Giao thức dựa trên xác thực

Mỗi loại sẽ được xem xét lần lượt bên dưới, bắt đầu với các giao thức dựa trên khóa được sử dụng rộng rãi nhất.

Giao thức dựa trên khóa

Giao thức dựa trên khóa Trong hệ quản trị cơ sở dữ liệu (DBMS), khóa là một cơ chế cho phép một giao dịch không thể đọc hoặc ghi một mục dữ liệu cho đến khi nó có được khóa thích hợp. Các giao thức dựa trên khóa giúp loại bỏ vấn đề đồng thời bằng cách khóa hoặc cô lập một mục dữ liệu cụ thể cho một giao dịch duy nhất.

Khóa là một biến dữ liệu được liên kết với một mục dữ liệu, dùng để chỉ định những thao tác nào có thể được thực hiện trên mục đó. Khóa giúp đồng bộ hóa quyền truy cập vào các mục trong cơ sở dữ liệu bởi các giao dịch đồng thời. Tất cả các yêu cầu khóa đều được gửi đến trình quản lý kiểm soát đồng thời, và các giao dịch chỉ được tiến hành khi yêu cầu khóa được chấp thuận.

Khóa nhị phân: Khóa nhị phân trên một mục dữ liệu có thể ở trạng thái bị khóa hoặc không bị khóa.

Dùng chung/Riêng biệt: Cơ chế khóa này phân tách các khóa dựa trên mục đích sử dụng của chúng. Nếu một khóa được giành được để thực hiện thao tác ghi, nó được gọi là khóa độc quyền.

1. Khóa chia sẻ (S): Khóa chia sẻ còn được gọi là khóa chỉ đọc. Với khóa chia sẻ, mục dữ liệu có thể được chia sẻ giữa các giao dịch, vì không giao dịch nào có quyền cập nhật mục đó. Ví dụ, nếu hai giao dịch đang đọc số dư tài khoản của một người, thì... cơ sở dữ liệu Cho phép họ đọc bằng cách đặt một khóa chia sẻ. Nếu một giao dịch khác muốn cập nhật số dư đó, khóa chia sẻ sẽ ngăn chặn điều đó cho đến khi quá trình đọc hoàn tất.

2. Khóa độc quyền (X): Với khóa độc quyền (X-lock), một mục dữ liệu có thể được đọc cũng như ghi. Nó là độc quyền và không thể có nhiều khóa được giữ đồng thời trên cùng một mục dữ liệu. Khóa X được yêu cầu bằng lệnh lock-x. Ví dụ, khi một giao dịch cần cập nhật số dư tài khoản, giao dịch đó được cho phép bằng cách đặt khóa X; giao dịch thứ hai muốn đọc hoặc ghi sau đó sẽ bị ngăn chặn.

3. Giao thức khóa đơn giản: Điều này cho phép các giao dịch có được khóa trên mọi đối tượng trước khi bắt đầu một thao tác. Các giao dịch có thể mở khóa mục dữ liệu sau khi hoàn thành thao tác ghi.

4. Khóa trước khi yêu cầu: Giao thức này đánh giá các thao tác và tạo ra một danh sách các mục dữ liệu cần thiết để bắt đầu thực thi. Khi tất cả các khóa được cấp, giao dịch sẽ được thực thi, và tất cả các khóa sẽ được giải phóng sau khi các thao tác hoàn tất.

Đói: Tình trạng "đói tài nguyên" xảy ra khi một giao dịch phải chờ đợi vô thời hạn để giành được quyền truy cập vào khóa. Nguyên nhân bao gồm việc quản lý kém hiệu quả cơ chế chờ đợi đối với các mục bị khóa, rò rỉ tài nguyên hoặc cùng một giao dịch bị chọn làm nạn nhân nhiều lần.

Bế tắc: Tình trạng tắc nghẽn (deadlock) xảy ra khi hai hoặc nhiều tiến trình chờ đợi tiến trình kia giải phóng một tài nguyên, tạo thành một chuỗi vòng tròn khép kín.

Giao thức khóa hai pha (2PL)

Giao thức khóa hai pha2PL, còn được gọi là 2PL, là một phương pháp kiểm soát đồng thời đảm bảo tính tuần tự bằng cách áp dụng khóa cho dữ liệu giao dịch, ngăn chặn các giao dịch khác truy cập cùng dữ liệu đó cùng một lúc.

Giao thức Khóa Hai Pha cho phép mỗi giao dịch thực hiện yêu cầu khóa hoặc mở khóa theo hai bước:

  • Giai đoạn phát triển: Trong giai đoạn này, một giao dịch có thể chiếm giữ các khóa nhưng không được phép giải phóng bất kỳ khóa nào.
  • Giai đoạn co rút: Trong giai đoạn này, một giao dịch có thể giải phóng các khóa nhưng không được phép có được bất kỳ khóa mới nào.

Khóa pha hai giai đoạn tăng trưởng và co rút

Đúng là 2PL cung cấp khả năng tuần tự hóa. Tuy nhiên, điều đó không đảm bảo rằng các tắc nghẽn sẽ không xảy ra. Trong sơ đồ trên, các bộ phát hiện tắc nghẽn cục bộ và toàn cục tìm kiếm các tắc nghẽn và giải quyết chúng bằng cách khôi phục các giao dịch về trạng thái ban đầu.

Phương pháp khóa hai pha nghiêm ngặt

Strict 2PL gần giống với 2PL. Điểm khác biệt duy nhất là Strict-2PL không bao giờ giải phóng khóa sau khi sử dụng. Nó giữ tất cả các khóa cho đến điểm cam kết và giải phóng tất cả cùng một lúc khi quá trình kết thúc.

2PL tập trung

Trong mô hình 2PL tập trung, một địa điểm duy nhất chịu trách nhiệm cho quy trình quản lý khóa. Nó chỉ có một trình quản lý khóa duy nhất cho toàn bộ hệ quản trị cơ sở dữ liệu (DBMS).

Bản sao chính 2PL

Trong cơ chế Sao chép chính 2PL, nhiều trình quản lý khóa được phân bổ đến các vị trí khác nhau, và một trình quản lý khóa cụ thể chịu trách nhiệm quản lý khóa cho một tập hợp các mục dữ liệu. Khi bản sao chính được cập nhật, sự thay đổi sẽ được truyền đến các bản sao phụ.

2PL phân phối

Trong cơ chế này, các trình quản lý khóa được phân bổ cho tất cả các địa điểm và chịu trách nhiệm quản lý các khóa dữ liệu tại địa điểm đó. Nếu không có dữ liệu nào được sao chép, nó tương đương với Primary Copy 2PL. Chi phí truyền thông của Distributed 2PL cao hơn đáng kể so với Primary Copy 2PL.

Giao thức dựa trên dấu thời gian

Giao thức dựa trên dấu thời gian Trong hệ quản trị cơ sở dữ liệu (DBMS), thuật toán này sử dụng thời gian hệ thống hoặc bộ đếm logic làm dấu thời gian để tuần tự hóa việc thực thi các giao dịch đồng thời. Nó đảm bảo rằng mọi thao tác đọc và ghi xung đột đều được thực thi theo thứ tự dấu thời gian.

Trong phương pháp này, giao dịch cũ hơn luôn được ưu tiên. Nó sử dụng thời gian hệ thống để xác định dấu thời gian của giao dịch và là giao thức xử lý đồng thời được sử dụng phổ biến nhất. Các giao thức dựa trên khóa quản lý thứ tự giữa các giao dịch xung đột khi chúng được thực thi; các giao thức dựa trên dấu thời gian quản lý các xung đột ngay khi một thao tác được tạo ra.

Ví dụ:

Suppose there are three transactions T1, T2, and T3.
T1 has entered the system at time 0010
T2 has entered the system at 0020
T3 has entered the system at 0030
Priority will be given to transaction T1, then T2 and lastly T3.

Ưu điểm:

  • Lịch trình có thể được tuần tự hóa, giống như các giao thức 2PL.
  • Không cần chờ đợi giao dịch, do đó loại bỏ khả năng xảy ra tắc nghẽn.

Nhược điểm: Hiện tượng chết đói có thể xảy ra nếu cùng một giao dịch được khởi động lại và liên tục bị hủy bỏ.

Giao thức dựa trên xác thực

Giao thức dựa trên xác thực Trong hệ quản trị cơ sở dữ liệu (DBMS), cơ chế kiểm soát đồng thời lạc quan (optimistic concurrency control), còn được gọi là phương pháp kiểm soát đồng thời lạc quan, là một phương pháp để tránh xung đột đồng thời trong các giao dịch. Trong giao thức này, các bản sao cục bộ của dữ liệu giao dịch được cập nhật thay vì chính dữ liệu gốc, dẫn đến ít sự can thiệp hơn trong quá trình thực thi.

Quy trình thẩm định dựa trên phương pháp xác thực được thực hiện qua ba giai đoạn:

  1. Đọc giai đoạn
  2. Giai đoạn xác nhận
  3. Giai đoạn viết

Đọc giai đoạn

Trong giai đoạn đọc, các giá trị dữ liệu có thể được đọc bởi một giao dịch, nhưng các thao tác ghi hoặc cập nhật chỉ được áp dụng cho các bản sao dữ liệu cục bộ, chứ không phải cơ sở dữ liệu thực tế.

Giai đoạn xác nhận

Trong giai đoạn xác thực, dữ liệu được kiểm tra để đảm bảo rằng việc áp dụng các bản cập nhật sẽ không vi phạm tính tuần tự hóa.

Giai đoạn viết

Trong giai đoạn ghi, các bản cập nhật sẽ được áp dụng vào cơ sở dữ liệu nếu quá trình xác thực thành công; ngược lại, các bản cập nhật sẽ bị loại bỏ và giao dịch sẽ được hoàn tác.

So sánh các giao thức kiểm soát đồng thời

Bốn nhóm giao thức này đưa ra những dự đoán khác nhau về tần suất xung đột thực tế giữa các giao dịch. Bảng dưới đây tóm tắt vị trí của từng nhóm.

Nghị định thư Phương pháp tiếp cận bế tắc Tốt nhất khi
Dựa trên khóa Thái độ bi quan, khóa cửa trước khi truy cập. Có thể Xung đột thường xuyên xảy ra
Khóa hai pha Các giai đoạn bi quan, tăng trưởng và suy giảm Có thể Tính tuần tự hóa là cần thiết
Dựa trên dấu thời gian Sắp xếp theo dấu thời gian Không bị tắc nghẽn Thứ tự giao hàng rất quan trọng, chờ đợi sẽ tốn kém.
Dựa trên xác thực Hãy lạc quan, xác thực trước khi viết. Không bị tắc nghẽn Xung đột rất hiếm khi xảy ra.

Tóm lại, các giao thức dựa trên khóa và 2PL giả định rằng xung đột là phổ biến và ngăn chặn nó ngay từ đầu, trong khi các giao thức dựa trên dấu thời gian và xác thực giả định rằng xung đột hiếm khi xảy ra và chỉ giải quyết nó khi nó xuất hiện.

Đặc điểm của một giao thức đồng thời tốt

Một cơ chế kiểm soát đồng thời lý tưởng cần có những mục tiêu sau:

  • Nó phải có khả năng chống chịu được các sự cố về địa điểm và liên lạc.
  • Nó cho phép thực hiện song song các giao dịch để đạt được sự đồng thời tối đa.
  • Cơ chế lưu trữ và phương pháp tính toán của nó phải khiêm tốn để giảm thiểu chi phí.
  • Nó phải áp đặt một số ràng buộc đối với cấu trúc của các hành động nguyên tử trong giao dịch.

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

Khóa chia sẻ cho phép đọc đồng thời nhưng không cho phép ghi, vì vậy nhiều giao dịch có thể giữ khóa đó. Khóa độc quyền cho phép đọc và ghi và không thể chia sẻ, vì vậy chỉ một giao dịch giữ khóa đó.

Không. 2PL đảm bảo tính tuần tự nhưng không đảm bảo tránh khỏi tình trạng tắc nghẽn. Hai giao dịch vẫn có thể chờ đợi khóa của nhau, vì vậy vẫn cần một cơ chế phát hiện hoặc hẹn giờ riêng biệt.

Khi xung đột hiếm khi xảy ra, cơ chế kiểm soát dựa trên xác thực tránh được chi phí khóa và cho phép các giao dịch chạy tự do, chỉ kiểm tra khi cam kết. Trong điều kiện tranh chấp cao, nó sẽ lãng phí công sức do thường xuyên phải hoàn tác.

Trí tuệ nhân tạo (AI) nghiên cứu các khối lượng công việc trong quá khứ để dự đoán những giao dịch nào sẽ xung đột, sau đó đề xuất mức độ cách ly hoặc độ chi tiết khóa giúp tăng thông lượng trong khi vẫn duy trì tính ổn định.ping Kết quả có thể được tuần tự hóa.

Nó không bao giờ khiến giao dịch phải chờ đợi. Một thao tác xung đột hoặc được cho phép theo thứ tự thời gian hoặc giao dịch bị hủy bỏ và khởi động lại, do đó không thể hình thành vòng chờ và không thể xảy ra tắc nghẽn.

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