Khơng cĩ khố.

Một phần của tài liệu Giáo trình hệ cơ sở dữ liệu phân tán và suy diễn phần 1 nguyễn văn huân, phạm việt bình (Trang 116 - 118)

Các khố đưọrc sử dụng theo cách sau:

+ Bất kỳ một giao địch nào cần truy cập vào một mục dữ liệu trước hết phải khố mục dữ liệu đĩ lại. Giao dịch sẽ yêu cầu một khố đọc nếu chi cần đọc dữ liệu và yêu cầu khố ghi nếu vừa cần đọc và cần ghi dữ iiệu.

+ Nếu mục dữ liệu đĩ chưa bị khố bởi một giao dịch nào khác thì khố sẽ được cấp phát theo đúng yêu cầu.

+ Nếu mục dữ liệu đĩ đang bị khố, HQT CSDL sẽ xác định xem khố đuợc yêu cầu cĩ tương thích với khố hiện hành hay khơng. Khi một giao dịch yêu cầu cấp một khố đọc cho nĩ trên một mục dữ liệu mà trên mục đĩ đang cĩ một khố đọc (của giao dịch khác) thì khố yêu cầu này được cấp phát. Trong trường hợp khố yêu cầu là khố ghi thì giao dịch yêu cầu khố

+ Một giao dịch tiếp tục giữ một khố cho đến tliịi điẽm khố đĩ được giải phĩng, thịi điêm này hoặc năm trong quá trình tlụrc hiện giao dịch hoặc là tliời diêm íiiao dịch được chuyên giao hay bị huý bị. Chi khi khố ghi đưọc gìái phỏng thì kết quả cua thao tác ghi mới thấy được đối với các giao dịch khác.

Một sổ hệ thống cịn cho phép giao dịch đưa các khố đọc trên một mục dừ liệu và sau đĩ nâng cấp khố lên thành khố ghi. Điều này cho phép một ííiao dịch kiểm tra dữ liệu trước, sau đĩ mới quyết định cĩ cập nhặt hay khơng.

Bộ quàn lý khố lưu các khố trong một khoủ (lock table).

Khỉ điều khiển các hoạt động tương tranh bằng khố, cĩ Ihể xảy ra các tình huống;

Khố sống (iive-lock) là tình huống mà một giao dịch yêu cầu khố trên một mục mà

chẳng bao giờ nhận được khố trong khi luơn cĩ một giao dịch khác giũ' khố trên mục này

{khố sống trên mục A của giao dịch T là khố khơng khố đirọc A vì A luơn bị khố bới một

giao dịch khác), mặc dù cĩ một số lằn giao dịch này cĩ cơ hội nhận khố trên mục đĩ. Rất nhiều giải pháp đă được các nhà thiết ké hệ điều hành đề xuất vấn đề giáỉ quyết khoú sống. Cĩ thể sư dụng một chiến lược đơn giản "đếìi ĩnrớc, phục vụ ĩr ư ớ c ' đế loại bỏ được khố sống.

B ế íẳc hay khố g à i (deadlock) là tình huống mà trong đĩ mỗi giao dịch trong một tập

hay nhiều giao dịch đang đợi nhận khố của một mục hiện đang bị khố bời một giao dịch khác trong một tập giao dịch đĩ và neược lại (một mục trong giao dịch này bị ^¿ìi bởi giao dịch khác và ngược lại).

Ví dụ 2.30: Giả sử cĩ hai giao dịch đồngthời TI -và Tị như sau:

T1 : Lock A ; Lock B ; Unlock A ; Unlock B; Tt : Lock B ; Lock A ; Unlock B ; Unlock A;

T| va Tt cùng cĩ thể thực hiện một số tác vụ nào đĩ trên A và B. Giả sử T| và T:> được thực hiện cùng lúc. Tị yêu cầu và được trao khố trên A, cịn T) yêu cầu và đirợc trao khố trên

B. Do đĩ khi Tị yêu cầu khố trên B nĩ sẽ phải đọi vì T.) đa khố B. Tirơng tự T.) yêu cầu klìố trên A nĩ sẽ phải đợi vi Tị đã khố A. Kết quả là khơng một giao dịch nào tiếp tục hoạt động trên A nĩ sẽ phải đợi vi Tị đã khố A. Kết quả là khơng một giao dịch nào tiếp tục hoạt động được: mỗi giao dịch đều phải đọi giao dịch kia mĩ’ khố, và chúng đều phải đợi nlnrng chẳng bao giờ nhận được khố như yêu cầu.

Để tránh bế tắc cĩ thể sử dụng các giái pháp:

(i) Buộc cúc giao dịch phai íhra ra íầi ca các veil cầu khoủ cùng một lúc và bộ q im i ìỷ

khố trao tất cả các khố cho chúng nếu được, hoặc khơng trao và cho giao dịch này đợi nếu một hay nhiều khố được yêi! cầu đang bị giữ bởi một giao dịch khác,

(ii) Gán m ột th ứ tự tuyến tÍ Ỵ ìh cho các mục và yêu cầu tất cà các giao dịch phải xin khố theo đúng thứ tự này.

(ịii) C ách khác đế x ừ lý bé tắc là định kỳ kiểm tra yẻii cầu khố và phát hiện cĩ xả> ra bế tắc khơng. Bằng cách dùng đ ồ thị chị’, với các nút biểu diễn các giao dịch và các cung Tj -> Tj biểu thị Tj đang đợi nhận khố trên một mục đang được T, giữ. Nếu trong đồ thị cĩ chu trinh, sự bế tấc sẽ xảy ra và nếu khơng cĩ chu trinh thi kết luận khơng cĩ khố gài hay bế tắC-

Nếu một khố gài bị phát hiện, khi đĩ hệ thống sẽ buộc một trong các giao dịch bị bế tắc phải khởi động lại và tác dụng của giao dịch đĩ trên cơ sở dữ liệu phải được hồn tồn trả lại.

2.5.4.I. Mơ hình khĩa cơ bản

Khố (Lock) là một đặc quyền truy cập trên một mục dữ liệu mà bộ quản lý khố (lock manager) cĩ thể trao cho một giao dịch hoặc thu hồi lặi. Trong các mơ hình giao dịch cĩ sử dụng khố khơng chỉ cĩ các thao tác đọc và ghi các mục mà cịn cĩ thao tác khố (lock) và mở khố (unlock) chúng. Mỗi mục được khố phải được mở khố sau đĩ. Với một mục A, giữa bước lock A và unlock A kế tiếp của một giao dịch, giao dịch này phải được coi là đang giữ một khố trên A.

Trong mơ hỉnh này, chúng ta dựa ữên các giả định sau:

Một phần của tài liệu Giáo trình hệ cơ sở dữ liệu phân tán và suy diễn phần 1 nguyễn văn huân, phạm việt bình (Trang 116 - 118)