Kiểm soát đồng thời là gì?
Kiểm soát đồng thời trong hệ quản trị cơ sở dữ liệu là một thủ tục quản lý các hoạt động đồng thời mà không xung đột với nhau. Nó đảm bảo rằng 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ả chính xác 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.
Truy cập đồng thời khá dễ dàng nếu tất cả người dùng chỉ đang đọc dữ liệu. Không có cách nào họ có thể can thiệp vào nhau. Mặc dù đối với bất kỳ Cơ sở dữ liệu thực tế nào, nó sẽ có sự kết hợp của các thao tác ĐỌC và VIẾT và do đó, tính đồng thời là một thách thức.
DBMS Concurrency Control được sử dụng để giải quyết các xung đột như vậy, chủ yếu xảy ra với hệ thống nhiều người dùng. Do đó, Kiểm soát đồng thời là yếu tố quan trọng nhất để vận hành đúng chức năng của Hệ quản trị cơ sở dữ liệu nơi hai hoặc nhiều giao dịch cơ sở dữ liệu được thực hiện đồng thời, yêu cầu quyền truy cập vào cùng một dữ liệu.
Trong hướng dẫn này, bạn sẽ học
- Kiểm soát đồng thời là gì?
- Các vấn đề tiềm ẩn của đồng tiền
- Tại sao sử dụng phương pháp Concurrency?
- Giao thức kiểm soát đồng thời
- Giao thức dựa trên khóa
- Giao thức khóa hai pha (2PL)
- Giao thức dựa trên dấu thời gian
- Giao thức dựa trên xác thực
- Đặc điểm của Giao thức đồng tiền tốt
Các vấn đề tiềm ẩn của đồng tiền
Dưới đây là một số vấn đề mà bạn có thể sẽ gặp phải khi sử dụng phương pháp Kiểm soát đồng tiền DBMS:
- Cập nhật bị mất xảy ra khi nhiều giao dịch chọn cùng một hàng và cập nhật hàng dựa trên giá trị đã chọn
- Các vấn đề phụ thuộc không được chấp nhận xảy ra khi 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 ( đọc bẩn )
- Đọc không lặp lại xảy ra khi giao dịch thứ hai đang cố gắng truy cập vào cùng một hàng nhiều lần và đọc dữ liệu khác nhau mỗi lần.
- Sự cố Tóm tắt không chính xác xảy ra khi một giao dịch tóm tắt 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 và giao dịch thứ hai cập nhật một số trường hợp của mục dữ liệu cụ thể đó. Trong tình huống đó, bản tóm tắt kết quả không phản ánh một kết quả chính xác.
Tại sao sử dụng phương pháp Concurrency?
Lý do sử dụng phương pháp điều khiển đồng thời là DBMS:
- Để áp dụng Cô lập 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 thông qua việc liên tục bảo tồn các vật cản thực thi
- Hệ thống cần kiểm soát sự tương tác giữa các giao dịch đồng thời. Kiểm soát này đạt được bằng cách sử dụng các sơ đồ kiểm soát đồng thời.
- Kiểm soát đồng thời giúp đảm bảo khả năng tuần tự hóa
Thí dụ
Giả sử rằng hai người đến cùng một lúc trong các ki-ốt điện tử để mua một vé xem phim cho cùng một bộ phim và cùng một giờ chiếu.
Tuy nhiên, chỉ còn một chỗ cho buổi chiếu phim tại rạp cụ thể đó. Nếu không có điều khiển đồng thời trong DBMS, có thể cả hai người xem phim sẽ mua một vé. Tuy nhiên, phương pháp điều khiển đồng thời không cho phép điều này xảy ra. Cả hai khán giả vẫn có thể truy cập thông tin được ghi trong cơ sở dữ liệu chỗ ngồi xem phim. Nhưng kiểm soát đồng thời chỉ cung cấp một vé cho người mua đã hoàn thành 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 cung cấp các lợi ích khác nhau giữa số lượng đồng thời mà chúng cho phép và lượng chi phí mà chúng áp đặt. Sau đây là các kỹ thuật Kiểm soát đồng thời trong DBMS:
- 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
- Các giao thức dựa trên xác thực
Giao thức dựa trên khóa
Giao thức dựa trên khóa trong DBMS là một cơ chế trong đó một giao dịch không thể Đọc hoặc Ghi dữ liệu cho đến khi nó có được một 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 trong DBMS đối với các giao dịch đồng thời bằng cách khóa hoặc cô lập một giao dịch cụ thể với một người dùng.
Khóa là một biến dữ liệu được liên kết với một mục dữ liệu. Khóa này biểu thị rằng các hoạt động có thể được thực hiện trên mục dữ liệu. Các khóa trong DBMS giúp đồng bộ hóa quyền truy cập vào các mục cơ sở dữ liệu bằng các giao dịch đồng thời.
Tất cả các yêu cầu khóa được thực hiện cho người quản lý kiểm soát đồng thời. Giao dịch chỉ tiến hành sau khi yêu cầu khóa được cấp.
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 khóa hoặc mở khóa.
Chia sẻ / độc quyền: Loại cơ chế khóa này phân tách các khóa trong DBMS dựa trên mục đích sử dụng của chúng. Nếu một khóa được lấy trên một mục dữ liệu để 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 dùng chung 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. Điều này là do bạn sẽ không bao giờ có quyền cập nhật dữ liệu trên mục dữ liệu.
Ví dụ, hãy xem xét trường hợp hai giao dịch đang đọc số dư tài khoản của một người. Cơ sở dữ liệu sẽ cho phép họ đọc bằng cách đặt một khóa dùng chung. Tuy nhiên, nếu một giao dịch khác muốn cập nhật số dư của tài khoản đó, khóa chia sẻ sẽ ngăn chặn điều đó cho đến khi quá trình đọc kết thúc.
2. Khóa độc quyền (X):
Với Khóa độc quyền, một mục dữ liệu có thể được đọc cũng như ghi. Điều này là độc quyền và không thể được tổ chức đồng thời trên cùng một mục dữ liệu. Yêu cầu khóa X bằng lệnh lock-x. Các giao dịch có thể mở khóa mục dữ liệu sau khi kết thúc thao tác 'ghi'.
Ví dụ, khi giao dịch cần cập nhật số dư tài khoản của một người. Bạn có thể cho phép giao dịch này bằng cách đặt khóa X trên đó. Do đó, khi giao dịch thứ hai muốn đọc hoặc ghi, khóa độc quyền sẽ ngăn chặn hoạt động này.
3. Giao thức khóa đơn giản
Loại giao thức dựa trên khóa 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 hoạt động. Các giao dịch có thể mở khóa mục dữ liệu sau khi kết thúc thao tác 'ghi'.
4. Khóa xác nhận quyền sở hữu trước
Giao thức khóa xác nhận trước giúp đánh giá hoạt động và tạo danh sách các mục dữ liệu bắt buộc cần thiết để bắt đầu quá trình thực thi. Trong tình huống khi tất cả các khóa được cấp, giao dịch sẽ thực hiện. Sau đó, tất cả các khóa sẽ phát hành khi tất cả các hoạt động của nó kết thúc.
Chết đói
Đói là tình huống khi một giao dịch cần đợi trong một khoảng thời gian không xác định để có được khóa.
Sau đây là những lý do gây ra Đói:
- Khi kế hoạch chờ đợi cho các mục bị khóa không được quản lý đúng cách
- Trong trường hợp rò rỉ tài nguyên
- Cùng một giao dịch được chọn làm nạn nhân nhiều lần
Bế tắc
Bế tắc đề cập đến một tình huống cụ thể trong đó hai hoặc nhiều quy trình đang chờ nhau giải phóng tài nguyên hoặc nhiều hơn hai quy trình đang chờ tài nguyên trong một chuỗi vòng tròn.
Giao thức khóa hai pha
Giao thức khóa hai pha còn được gọi là giao thức 2PL là một phương pháp kiểm soát đồng thời trong DBMS để đảm bảo khả năng tuần tự hóa bằng cách áp dụng khóa cho dữ liệu giao dịch, khóa này chặn các giao dịch khác truy cập đồng thời vào cùng một dữ liệu. Giao thức Khóa hai pha giúp loại bỏ vấn đề đồng thời trong DBMS.
Giao thức khóa này chia giai đoạn thực hiện của một giao dịch thành ba phần khác nhau.
- Trong giai đoạn đầu tiên, khi giao dịch bắt đầu thực hiện, nó yêu cầu sự cho phép đối với các khóa mà nó cần.
- Phần thứ hai là nơi giao dịch lấy được tất cả các khóa. Khi một giao dịch giải phóng khóa đầu tiên của nó, giai đoạn thứ ba sẽ bắt đầu.
- Trong giai đoạn thứ ba này, giao dịch không thể yêu cầu bất kỳ khóa mới nào. Thay vào đó, nó chỉ phát hành các khóa có đượ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 trong hai bước:
- Giai đoạn phát triển : Trong giai đoạn này, giao dịch có thể nhận được khóa nhưng không thể phát hành bất kỳ khóa nào.
- Giai đoạn thu hẹp : Trong giai đoạn này, một giao dịch có thể giải phóng khóa nhưng không nhận được bất kỳ khóa mới nào
Đúng là giao thức 2PL cung cấp khả năng tuần tự hóa. Tuy nhiên, nó không đảm bảo rằng deadlock không xảy ra.
Trong sơ đồ đã cho ở trên, bạn có thể thấy rằng các trình phát hiện bế tắc cục bộ và toàn cầu đang tìm kiếm các bế tắc và giải quyết chúng bằng cách tiếp tục các giao dịch về trạng thái ban đầu của chúng.
Phương pháp khóa hai pha nghiêm ngặt
Hệ thống khóa hai pha nghiêm ngặt gần như tương tự như 2PL. Sự khác biệt duy nhất là Nghiêm ngặt-2PL không bao giờ phát hành khóa sau khi sử dụng nó. 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ác khóa cùng một lúc khi quá trình kết thúc.
2PL tập trung
Trong Trung tâm 2 PL, một trang web chịu trách nhiệm cho quá trình quản lý khóa. Nó chỉ có một trình quản lý khóa cho toàn bộ DBMS.
Bản chính 2PL
Cơ chế 2PL sao chép chính, nhiều trình quản lý khóa được phân phối đến các trang web khác nhau. Sau đó, 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, thay đổi sẽ được truyền tới các nô lệ.
2PL được phân phối
Trong loại cơ chế khóa hai giai đoạn này, các trình quản lý Khóa được phân phối đến tất cả các trang web. Họ chịu trách nhiệm quản lý khóa cho dữ liệu tại trang web đó. Nếu không có dữ liệu nào được sao chép, nó tương đương với bản sao chính 2PL. Chi phí truyền thông của 2PL phân tán khá cao hơn 2PL bản chính
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 DBMS là một thuật toán sử dụng Bộ đếm 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 hiện các giao dịch đồng thời. Giao thức dựa trên Dấu thời gian đảm bảo rằng mọi hoạt động đọc và ghi xung đột đều được thực thi theo thứ tự dấu thời gian.
Giao dịch cũ hơn luôn được ưu tiên trong phương thức này. Nó sử dụng thời gian hệ thống để xác định dấu thời gian của giao dịch. Đây là giao thức đồng thời được sử dụng phổ biến nhất.
Các giao thức dựa trên khóa giúp bạn quản lý thứ tự giữa các giao dịch xung đột khi chúng sẽ thực hiện. Các giao thức dựa trên dấu thời gian quản lý xung đột ngay sau khi một hoạt động được tạo.
Thí dụ:
Suppose there are there transactions T1, T2, and T3.T1 has entered the system at time 0010T2 has entered the system at 0020T3 has entered the system at 0030Priority will be given to transaction T1, then transaction T2 and lastly Transaction T3.
Ưu điểm :
- Lịch trình có thể tuần tự hóa giống như giao thức 2PL
- Không phải chờ đợi giao dịch, giúp loại bỏ khả năng bế tắc!
Nhược điểm:
Có thể bị chết đói 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 DBMS còn được gọi là Kỹ thuật kiểm soát đồng thời lạc quan là một phương pháp để tránh đồ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ì bản thân dữ liệu, điều này dẫn đến ít bị can thiệp hơn trong khi thực hiện giao dịch.
Giao thức dựa trên xác thực được thực hiện trong ba giai đoạn sau:
- Giai đoạn đọc
- Giai đoạn xác thực
- Viết giai đoạn
Giai đoạn đọc
Trong Giai đoạn Đọc, các giá trị dữ liệu từ cơ sở dữ liệu có thể được đọc bởi một giao dịch nhưng 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ộ, không phải cơ sở dữ liệu thực tế.
Giai đoạn xác thực
Trong Giai đoạn Xác thực, dữ liệu được kiểm tra để đảm bảo rằng không có vi phạm về khả năng tuần tự hóa trong khi áp dụng các bản cập nhật giao dịch cho cơ sở dữ liệu.
Viết giai đoạn
Trong Giai đoạn Viết, các bản cập nhật được áp dụng cho cơ sở dữ liệu nếu việc xác nhận thành công, nếu không; các bản cập nhật không được áp dụng và giao dịch được khôi phục lại.
Đặc điểm của Giao thức đồng tiền tốt
Một cơ chế DBMS kiểm soát đồng thời lý tưởng có các mục tiêu sau:
- Phải có khả năng chống lại sự cố về trang web và thông tin 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ác cơ chế lưu trữ và phương pháp tính toán của nó nên khiêm tốn để giảm thiểu chi phí.
- Nó phải thực thi một số ràng buộc về cấu trúc của các hành động nguyên tử của các giao dịch.
Tóm lược
- Kiểm soát đồng thời là thủ tục trong DBMS để quản lý các hoạt động đồng thời mà không xung đột với nhau.
- Cập nhật bị mất, đọc bẩn, đọc không lặp lại và vấn đề tóm tắt không chính xác là những vấn đề phải đối mặt do thiếu kiểm soát đồng thời.
- Dựa trên khóa, hai pha, dựa trên dấu thời gian, dựa trên xác thực là các loại giao thức xử lý đồng thời
- Khóa có thể là Chia sẻ (S) hoặc Độc quyền (X)
- Giao thức khóa hai pha còn được gọi là giao thức 2PL cần giao dịch nên có được khóa sau khi nó phát hành một trong các khóa của nó. Nó có 2 giai đoạn lớn lên và thu nhỏ.
- Thuật toán dựa trên dấu thời gian sử dụng dấu thời gian để tuần tự hóa việc thực hiện các giao dịch đồng thời. Giao thức sử dụng Thời gian hệ thống hoặc Đếm lôgic làm Dấu thời gian.