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.

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.
Đú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:
- Đọc giai đoạn
- Giai đoạn xác nhận
- 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.

