Trong lược đồ khóa đa chế độ này, có 3 chế độ khóa đối với mục dữ liệu: read, write và certify, thay vì chỉ có 2 (read và write) như đã biết. Do đó trạng thái của LOCK(X) đối với mục dữ liệu X có thể là một trong read_locked, write_locked, certify_locked hoặc unlocked. Trong lược đồ khóa chuẩn chỉ với khóa read và write (mục 2.1.1), khóa write là một khóa exclusive. Diễn tả mối quan hệ giữa khóa read và write trong lược đồ chuẩn bằng bảng tương
thích khóa được chỉ ra trong hình 2.6(a). Đầu ra là Yes có nghĩa, nếu một giao tác T giữ loại khóa được chỉ rõ ở đầu cột trên mục dữ liệu X và nếu giao tác T’ yêu cầu loại khóa được chỉ rõ ở đầu hàng trên cùng mục dữ liệu X thì T’ có thể thu được khóa do chế độ khóa là tương thích. Một trường hợp khác, đầu ra là No trong bảng cho biết rằng khóa là không tương thích. Bởi vậy T’ phải đợi cho đến khi T giải phóng khóa.
Trong lược đồ khóa chuẩn, một giao tác nhận được khóa write trên mục dữ liệu, các giao tác khác không thể truy cập vào mục dữ liệu đó. Ý tưởng đằng sau của 2PL đa phiên bản là để cho phép giao tác khác đọc mục dữ liệu X trong khi có một giao tác giữ khóa write trên X. Điều này được hoàn thành bằng cách cho phép 2 phiên bản của mỗi mục dữ liệu X; phiên bản thứ nhất phải luôn luôn được ghi bởi giao tác được xác nhận hoàn thành. Phiên bản thứ hai X’ được tạo ra khi giao tác T yêu cầu khóa write trên mục dữ liệu. Các giao tác khác có thể tiếp tục đọc phiên bản được xác nhận hoàn thành của X trong khi T giữ khóa write. Giao tác T có thể ghi giá trị của X’ nếu cần thiết mà không ảnh hưởng giá trị của phiên bản X được xác nhận hoàn thành. Tuy nhiên, khi T sẵn sàng xác nhận hoàn thành, nó phải giành được khóa chứng nhận trên tất cả các mục dữ liệu mà hiện tại nó giữ khóa write trước khi nó có thể xác nhận hoàn thành. Khóa chứng nhận không tương thích với khóa read, do vậy giao tác phải làm trễ xác nhận hoàn thành cho đến khi tất cả các write_locked được giải phóng bởi bất kỳ giao tác đọc theo trật tự nào giành được khóa chứng nhận. Một khóa chứng nhận là các khóa exclusive được yêu cầu, phiên bản X được xác nhận hoàn thành của mục dữ liệu bắt đầu là giá trị của phiên bản X’, phiên bản X’ bị loại bỏ và khóa chứng nhận được giải phóng.[1]
(a) Read Write
Read yes no
Write no no
(b) Read Write Certify
Read yes yes no
Write yes no no
Certify no no no
Hình 2.6 Các bảng khóa tương thích