1. Khi giao dịch cú yờu cầu đọc hoặc ghi vào một mục cơ sở dữ liệu chứa khúa, bộ quản lý giao dịch sẽ chuyển cho bộ quản lý khúa cỏc thao tỏc đọc, ghi và cỏc thụng tin như mục dữ liệu cần truy xuất, định danh của giao dịch đưa ra yờu cầu...
2. Bộ quản lý sẽ thực hiện kiểm tra đơn vị khúa cú chứa mục dữ liệu đó bị khúa hay chưa, tức là mục dữ liệu này đó được sử dụng bởi một giao dịch khỏc hay chưa.
3. Bộ quản lý giao dịch sẽ được trả về cỏc kết quả của cỏc hoạt động. Khi giao dịch kết thỳc nú sẽ giải phúng cỏc khoỏ mà nú đó sử dụng và khởi tạo một giao dich khỏc cũng đang chờ để truy cập vào khoản mục dữ liệu khỏc.
Thuật toỏn quản lý khúa cơ bản (Basic lock manager)
Declare-var: msg: Message, dop: Dbop, Op: Operation, x: DataItem, TransactionId, pm: Dpmsg, res: Data Val, SOP: OpSet
begin repeat WAIT(msg) case of msg Dbop: begin Op ← dop.opn x ← dop.data T ←dop.tid case of Op Begin_transaction: begin Gửi dop đến bộ xử lý dữ liệu end
Begin
Tỡm một đơn vị khúa lu sao cho x ⊆ lu
If lu chưa bị khúa or khúa lu tương thớch với Op then begin
Thiết lập khúa trờn lu với chếđộ thớch hợp Gửi dop đến bộ xử lý dữ liệu
end
else đưa dop vào hàng đợi của lu end-if
end
Abort or (hoặc) Commit: begin gửi dop đến bộ xử lý dữ liệu end end-case Dpmsg: begin Op ← pm.opn res ← pm.result T ← pm.tid
Tỡm khúa lu sao cho x ⊆ lu giải phúng khúa trờn lu do T giữ
If khụng cú khúa nào trờn lu and khụng cú một hoạt động nào đang đợi trong hàng đợi của khúa lu then
begin
SOP ←hoạt động đầu tiờn trong hàng đợi
SOP←SOP∪{O| O là một hoạt động trong hàng đợi mà khúa lu ở chếđộ tương thớch với cỏc hoạt động trong SOP
thiết lập cỏc khúa trờn lu đại diện cho cỏc hoạt động trong SOP
for all cỏc hoạt động trong SOP do
gửi mỗi hoạt động đến bộ xử lý dữ liệu end-for end-if end end-case until forever end. {Basic LM}
Thuật toỏn khúa chốt cơ bản là một thuật toỏn đơn giản. Tuy nhiờn thuật toỏn khụng đồng bộ húa sự thực thi giao dịch một cỏch hoàn toàn đỳng đắn, vỡ khi đưa ra cỏc lịch biểu khả tuần tự, cỏc thao tỏc khúa chốt và giải phúng khúa chốt cũng đũi hỏi phải được sắp xếp phối hợp. Vỡ vậy cú thể dẫn đến việc mất đi tớnh cụ lập và tớnh nguyờn tử tổng thể của giao dịch.
Vớ dụ 4.12: Xột hai giao dịch sau đõy:
T1: Read(x) T2: Read(x) x ← x + 1 x ← x*2 Write(x) Write(x) Read(y) Read(y) y ← y –1 y ← y*2 Write(y) Write(y) Commit Commit Thuật toỏn bộ quản lý khúa cơ bản tạo ra một lịch biểu S như sau: S = {wl1(x), R1(x), W1(x), lr1(x), wl2(x), R2(x), W2(x), lr2(x), wl2(x), R2(y), W2(y), lr2(y), C2, wl1(y), R1(y), W1(y), lr1(y), C1}
Ký hiệu lri(z) là thao tỏc giải phúng khúa trờn z đang bị Ti giữ. Hiển nhiờn lịch biểu S là một lịch biểu khụng khả tuần tự. Giả sử trước khi thực hiện cỏc giao dịch, giỏ trị của x là 50 và giỏ trị của y là 20. Giỏ trị của x sẽ là 102 và của y là 39 nếu T1 thực hiện trước T2, hoặc sẽ là 101 và 39 nếu T2 thực hiện trước T1. Kết quả thực hiện S cho giỏ trị của x là 102 và của y là 39.
Thuật toỏn đó giải phúng cỏc khúa khi bị một giao dịch giữ (chẳng hạn T1) ngay khi lệnh đi kốm (đọc hoặc ghi) được thực hiện và đơn vị khúa (chẳng hạn x) khụng cần truy cập. Tuy nhiờn bản thõn giao dịch đú đang khúa những mục khỏc (chẳng hạn y) sau khi nú giải phúng khúa trờn x. Điều này làm tăng khả năng hoạt động đồng thời cỏc giao dịch, cho phộp cỏc giao dịch đan xen lẫn nhau, nhưng sẽ vi phạm tớnh cụ lập và tớnh nguyờn tố tổng thể.