1. Trang chủ
  2. » Tất cả

Bao cao de tai

29 3 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 29
Dung lượng 425,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

− Một giao dịch gọi là phát triển nếu:  Một phép toán chỉ được thực hiện trên một đối tượng sau khi đối tượng đó đãđược cài then bởi giao dịch theo kiểu tương thích với phép toán.. Một

Trang 1



Sự phát triển nhanh chóng của hệ thống Viễn thông – Công Nghệ Thông tin trong giai đoạn hiện nay đã đóng góp rất nhiều vào quá trình phát triển xã hội, làm cho cuộc sống của con người ngày càng tiện nghi, đầy đủ hơn Tuy nhiên với yêu cầu ngày càng cao trong công việc và cuộc sống thì có một số vấn đề mà hệ thống tin học tập trung hiện tại đã không thể giải quyết được Từ đó, hệ tin học phân tán với các ưu điểm của mình đã

và đang trở thành một phương pháp hiệu quả để giải quyết các vấn đề cấp thiết hiện nay Tuy nhiên, để giải quyết về vấn đề gắn bó dữ liệu và cung cấp tài nguyên trong hệ phân tán là một vấn đề phức tạp Vấn đề quan trọng là chiến lược khai thác và sử dụng các tài nguyên dùng chung như thế nào ?

Trong phạm vi của bài tiểu luận này, với những kiến thức mà tôi đã được học, đọc cũng như tự tìm hiểu thêm từ sách báo và mạng Internet, tôi xin trình bày ba nội dung theo trình tự như sau:

Phần I: Điều khiển đồng thời bằng cơ chế then cài

Phần II: Bài toán sử dụng bộ quản lý khoá cơ bản và những điểm cần cải tiến Phần III: Phần mềm mô tả hoạt động cơ chế then cài ( bằng ngôn ngữ JAVA).

Với một lĩnh vực còn mới mẻ, đa dạng và phức tạp như trên vì vậy việc tìm hiểu của tôi còn nhiều hạn chế Kính mong nhận được sự góp ý, định hướng của Thầy giáo Lê Văn Sơn và các bạn cùng lớp để tôi có thể tiếp tục nghiên cứu và đạt được kết quả tốt hơn trong thời gian tới.

Xin chân thành cảm ơn !

Trang 2

CHƯƠNG I : ĐIỀU KHIỂN ĐỒNG THỜI BẰNG CƠ CHẾ THEN CÀI

1 Tổng quan:

Một cách đơn giản, chúng ta hình dung vấn đề sau để có thể hiểu được về

cơ chế then cài trong việc Điều khiển đồng thời:

Giả sử có 2 phần mềm cùng cần đọc hay ghi một tập tin f được lưu trên đĩa

C và nhiệm vụ của mỗi phần mềm như sau:

- Phần mềm 1 ghi chữ “HELLO”

- Phần mềm 2 ghi chữ “WORLD”

Mục đích cuối cùng của chúng ta là ghi ra chữ “HELLO WORLD” trong tệp tin f Giả sử rằng chúng ta chưa có một cơ chế điều khiển để các phần mềm thực hiện việctruy cập tập tin f thì kết quả có thể có trong tập tin f như:

WORLD HELLO ( trật tự bị đảo ngược )

HE WORLD LLO ( thứ tự không theo trật tự)

… Và nhiều kết quả khác

Như vậy mục tiêu của 2 phần mềm sẽ không đáp ứng được yêu cầu

Do vậy, nói rộng ra trong hệ phân tán, để đạt được kết quả đúng, chúng tacần sử dụng một cơ chế đề điều khiển việc truy cập đồng thời vào một tài nguyên nhấtđịnh Qua nhiều nghiên cứu, thuật toán điều khiển đồng thời được sử dụng rộng rãinhất là then cài Trong ví dụ trên, khi một tiến trình cần đọc hay ghi một tập tin thìtrước tiên nó phải khoá (cài then) tập tin đó Then cài có thể được dùng như một bộquản lý khoá tập trung, hay với một bộ quản lý khoá cục bộ trên từng máy để quản lýcác tập tin cục bộ Trong cả hai trường hợp, bộ quản lý khoá bao gồm một danh sáchcác tập tin bị khoá, và từ chối tất cả mọi cố gắng cài then tập tin mà tập tin đó đã thật

sự bị khoá bởi một tiến trình khác Khoá được sinh ra và được giải thoát một cách tựđộng bởi hệ thống các giao tác, không phụ thuộc vào hành động của lập trình viên

2 Cơ chế then cài:

− Một giao dịch nào đó đang thực hiện phép then cài trên một đối tượngmuốn dành quyền sử dụng đối tượng này theo một vài kiểu truy cập nhất định Cơ chếthen cài gán hay không gán quyền truy cập này căn cứ vào qui tắc tiền định như loại trừtương hỗ, luật đọc – hiệu chỉnh thông tin…

− Nếu quyền được thừa nhận thì đối tượng bị cài then bởi giao dịch Nếukhông, tiến trình thực hiện giao dịch bị khóa và đối tượng không bị cài then

− Cơ chế then cài cho phép một giao dịch có thể giải phóng đối tượng mà nó

đã cài then

a Loại trừ tương hỗ:

− Một trong những giải pháp đơn giản để đạt được trật tự hoá gắn bó thể hiện

ở chổ bắt buộc phải sử dụng trật tự hoá tuần tự Để làm việc đó, toàn bộ giao dịch được

đặt trong cặp hàm nguyên thuỷ mo_giaodich và dong_giaodich Đây là sự đảm bảo cho

việc loại trừ tương hỗ giữa các giao dịch

Trang 3

− Nếu ta biết trước các đối tượng được xử lý bởi một giao dịch nào đó, thì ta

có thể cài then công việc truy cập đến các đối tượng Điều đó chỉ cho phép thực hiệnsong song đối với các giao dịch truy cập vào các đối tượng rời rạc

− Nếu ta muốn nâng cao hơn nữa khả năng sử dụng song song, thì cần phảithực hiện cài then ở mức độ thấp hơn mức giao dịch

b Then cài chọn lựa các đối tượng:

− Các quy tắc truy cập đối tượng được chú ý Đó là tính hợp thức của việc

truy cập Nội dung của quy tắc này như sau: “Một giao dịch thay đổi giá trị của đối tượng phải loại trừ tất cả các đối tượng khác muốn truy cập, ngược lại thì việc truy cập được tiến hành theo kiểu tương tranh”.

− Để đảm bảo điều đó luôn luôn được thực hiện, người ta cho phép tiến hànhcài then một đối tượng trước khi việc sử dụng nó có hiệu lực

Một giao dịch có thể thực hiện ba hàm nguyên thuỷ trên đối tượng e:

1 v_doc(e) Sử dụng khi muốn có được quyền đọc e theo kiểu chia sẽ.

2 v_viet(e) Sử dụng khi muốn có được quyền đọc và viết vào e theo kiểu

loại trừ

3 giai_phong(e) Giải phóng đối tượng e Giả sử trước đó đã được cài then bởi

cùng giao dịch này

− Một giao dịch gọi là phát triển nếu:

 Một phép toán chỉ được thực hiện trên một đối tượng sau khi đối tượng đó đãđược cài then bởi giao dịch theo kiểu tương thích với phép toán

 Không có giao dịch nào cài then được trên đối tượng mà trước đó đã bị càithen cũng bởi chính giao dịch đó, ngoại trừ theo kiểu loại trừ trong trường hợptrước đó đã sử dụng kiểu chia sẽ

 Sau khi chấm dứt một giao dịch, không có đối tượng nào bị cài then

− Các then cài được sử dụng để hạn chế một lớp các trật tự hoá có khả năngđược thực hiện Một trật tự hoá được gọi là hợp thức nếu:

 Đối tượng được một giao dịch cài then theo kiểu chia sẽ không bị bất cứ thencài nào theo kiểu loại trừ của các giao dịch khác

 Một đối tượng bị cài then theo kiểu loại trừ thì không bị bất kỳ then cài mớinào nữa

− Do vậy, mọi cố gắng cài then không phù hợp với các điều kiện tương hỗnêu trên đều phải chờ (bị làm chậm lại) cho đến khi mở then

Chú ý: Một giao dịch được gọi là tốt, nếu nó sử dụng các then cài phù hợp

với đặc điểm của chúng Một trật tự hoá được gọi là hợp thức, nếu các then cài hoạt độngphù hợp với các đặc điểm này

Trang 4

 Không có then cài nào có thể diễn ra tiếp theo một then cài khác trong cùngmột giao dịch.

o Điều kiện này thể hiện ở chỗ là dãy các phép toán trên các then cài đượcphân tích thành hai pha nối tiếp nhau Một pha mà trong đó các đối tượng

bị cài then, còn pha kia chúng được mở then

o Toàn bộ trật tự hoá hợp thức của một tập hợp các giao dịch hình thành tốthai pha là gắn bó, có nghĩa là cùng hiệu ứng với trật tự hoá tuần tự

o Ngược lại, nếu các giao dịch của một tập hợp không phải là hình thành tốt

và ở hai pha thì có thể xây dựng các trật tự hoá hợp thức của M là không

gắn bó

− Để hiểu rõ hơn, ta xem xét các ví dụ sau

 Ví dụ 1:

Hãy truy cập vào tập hợp các đối tượng

Giả sử rằng ta muốn đọc các giá trị của một tập hợp các đối tượng và quy ước rằngcác giá trị này kiểm tra các ràng buộc toàn vẹn Lúc này, ta cần phải cài then theo kiểuchia sẽ cho mỗi một đối tượng trước khi đọc, mở then diễn ra ở cuối của giao dịch này.Một phép như vậy gọi là đọc gắn bó của tập hợp các đối tượng

Như thế, giao dịch được thể hiện như sau:

là giao dịch đọc gắn bó của tập hợp {a,b,c}

 Ví dụ 2: Quản lý các tài khoản trong một ngân hàng

Mỗi một người mở tài khoản tại ngân hàng sẽ được lưu trữ trong một bản ghi của

cở sở dữ liệu Các trường của bản ghi này bao gồm họ và tên, địa chỉ, điện thoại và mộtkhoá duy nhất (mã số) cho người đó Mã số đóng vai trò con trỏ đến cơ sở dữ liệu khácchứa các lần thu tiền vào và rút tiền ra từ tài khoản Cuối cùng, chúng ta phải có cơ sở dữliệu chứa số dư Số dư là số tiền có trong tài khoản ở thời điểm xem xét của từng ngườigửi tiền Trạng thái của số dư trong tài khoản được khống chế ở mức xác định, ví dụ như

số dư không được ≤ N cho trước Điều đó cũng đồng nghĩa với việc đảm bảo trong tàikhoản của người sủ dụng không bao giờ có giá trị bằng 0 hay giá trị âm

Bây giờ chúng ta hãy nghiên cứu vấn đề quản lý truy cập thông tin tài khoản chophép đảm bảo được tính gắn bó

Sau đây là hai kiểu mô tả khác nhau của giao dịch T và một kiểu mô tả có thể của giao dịch U:

v_doc(a)v_doc(b)doc(a)doc(b)v_doc(c)doc(c)giai_phong(a)giai_phong(b)giai_phong(c)

Trang 5

A:= (1+t)*Av_viet(B)B:= (1+t)*Bgiai_phong(B)giai_phong(A)

Ta kiểm tra rằng tất cả các giao dịch đều là hình thành tốt và T 2 và U đều ở hai pha

và T 1 không có hai pha.

Sau đây là hai trật tự hoá hợp thức S1 và S2 xuất phát từ việc thực hiện song songcủa T1 và U và T2 và U2

Trang 6

1 Xử lý các giao tác (Transaction Processing):

− Giao tác là một chuỗi lệnh thực hiện trên các đối tượng dữ liệu (cácdòng - tuples, cột- fields) trong một hệ cơ sở dữ liệu (CSDL) Các lệnh của giao tácbao gồm:

o Start(): Bắt đầu thực hiện một giao tác

o Commit(): Kết thúc thành công một giao tác

o Abort(): Hủy bỏ một giao tác

Các bộ phận quản lý thực hiện một giao dịch của Hệ quản trị CSDL:

Hình 1: Các bộ phận quản lý thực hiện giao tác

Trong đó:

Transactions: Các giao tác;

Transaction manager (TM): Bộ quản lý giao tác thực hiện các thao tác CSDL

Trang 7

Scheduler (SC): Bộ lập lịch có nhiệm vụ thực hiện các thuật toán kiểm soátđồng hành nhằm đồng bộ các thao tác truy cập vào CSDL.

Data Manager (DM): Bộ quản lý dữ liệu

BEGIN_TRANSACTION, END_TRANSACTION: bắt đầu và kết thúc giaotác

Timestamp: Dấu thời gian

LOCK/Release: Khóa/Giải phóng

a Mỗi giao tác liên kết tất cả các tác vụ đọc/ghi của nó với bộ quản lý giao tác(TM)

b TM liên kết từng giao tác đọc ghi với SC

c Bộ SC điều khiển chuỗi giao tác, theo đó DM xử lý các lệnh dọc/ghi và duy trìđiều khiển đồng thời

Khi SC nhận một thao tác từ TM, nó có ba cách chọn lựa:

• Ngay lập tức lập lịch cho thao tác đó (bằng cách gửi nó đến bộ DM);

• Trì hoãn thao tác (bằng cách chèn nó vào trong một hàng đợi nào đấy); hoặc

• Từ chối thao tác

Bộ DM sẽ thực hiện từng lệnh đọc/ghi nhận được Đối với tác vụ đọc, bộ DMduyệt CSDL cục bộ và trả về giá trị yêu cầu Đối với tác vụ ghi, bộ DM sửa đổi CSDLcục bộ và và trả về một ghi nhận chấp thuận thao tác cho bộ SC Đến lượt, bộ SC trả

về cho TM và TM trả về cho giao tác

Các bộ phận quản lý thực hiện các giao dịch phân tán của hệ quản trị CSDLphân tán

Hình 2: Các bộ phận quản lý thực hiện giao dịch phân tán

2 Khóa chốt cơ bản:

− Việc điều khiển đồng thời bằng khoá chốt là một cơ chế thường dùng đểgiải quyết những vấn đề liên quan đến việc đồng bộ hoá dữ liệu truy cập dùng chung,đảm bảo dữ liệu dùng chung cho các thao tác tương tranh chỉ được truy xuất một lầnmột giao dịch Mỗi phần tử dữ liệu đều có một khoá chốt kết hợp với chúng

Trang 8

Điều này được thực hiện bằng cách liên kết một khoá chốt với mỗi đơn

vị khoá Khoá này được giao dịch đặt ra trước khi nó truy xuất và được điều chỉnh lạivào lúc nó hết sử dụng Hiển nhiên là một đơn vị khoá không thể truy xuất được nếu

đã bị khoá bởi một giao dịch khác Vì vậy, yêu cầu khoá của một giao dịch chỉ đượctrao nếu khoá đi kèm hiện không bị một giao dịch khác giữ

− Bộ xếp lịch đảm bảo rằng chỉ duy nhất giao tác có thể giữ khoá chốttrong một thời điểm, và chỉ có một giao tác có thể truy xuất dữ liệu đó tại cùng mộtthời điểm

− Khoá chốt được bộ xếp lịch (Schedule manager) dùng để đảm bảo tínhkhả tuần tự

− Trước khi một giao tác có thể truy cập dữ liệu dùng chung, bộ xếp lịch

sẽ khảo sát trạng thái khoá chốt của những dữ liệu này

 Nếu không có giao tác nào khác đang giữ chúng thì bộ xếp lịch sẽ phát lệnhthông báo khoá dữ liệu này lại và sau đó các giao tác thực hiện các lệnh củamình trên dữ liệu đó

 Nếu dữ liệu đang bị khoá bởi giao tác T2, thì giao tác này phải chờ cho đếnkhi nào T2 giải phóng khoá đó

− Bởi vì chúng ta quan tâm đến việc đồng bộ hóa các thao tác tương tranhcủa các giao dịch tương tranh nên có hai loại khóa chốt được kèm với mỗi đơn vị

khóa: Khóa đọc (Read Lock - RL), và Khóa Ghi (Write Lock - WL)

 RLi(x): khoá đọc trên phần tử dữ liệu x của giao tác Ti

 WLj(x): khoá ghi trên phần tử dữ liệu x của giao tác Tj

Hai khoá pli(x) và qlj(y) đụng độ nếu x=y, i≠j, có nghĩa rằng chúng khoá trêncùng một phần tử dữ liệu, chúng được phát sinh từ hai giao tác khác nhau và mộttrong hai thao tác là ghi

− Một giao dịch Ti đang muốn đọc một mục dữ liệu được chứa trong đơn

vị khóa x sẽ nhận được một khóa đọc trên x (ký hiệu là rli(x) và cũng tương tự như vậyvới thao tác ghi

− Tính tương thích của các thực thể khóa được mô tả trong bảng sau:

RLi(x) Tương thích Không tương thích

WLi(x) Không tương thích Không tương thích

Những quy tắc quản lý và sử dụng khoá:

 Qui tắc 1:

Khi nhận được một thao tác pi[x] từ bộ quản lý giao tác (TransactionManager, TM), bộ xếp lịch kiểm tra nếu pli[x] đụng độ với một vài qlj[x] đượcđặt trước đó

o Nếu đúng, nó sẽ trì hoãn pi[x] và buộc Ti chờ cho đến khi nó có thể đặtđược khoá cần thiết

o Nếu không đụng độ, bộ xếp lịch (scheduler) sẽ đặt pli[x] và gởi pi[x] đến

bộ quản lý dữ liệu (Data Manager, DM)

Quy tắc này nhằm hạn chế hai giao tác truy xuất đồng thời một phần tử dữliệu trong tình trạng đụng độ

 Qui tắc 2:

Trang 9

Mỗi khi bộ xếp lịch đặt khoá cho Ti, pli[x], nó không thể giải phóng khoá

đó cho đến khi DM trả lời đã xử lý thao tác tương ứng của khoá, pi[x]

T3: Read(x) Read(y) Read(z) Commitkhi đó ta có lịch biểu:

H1={W2(x),R1(x),R3(x),W1(x),C1,W2(y),R3(y),R2(z),C2,R3(z),C3}

b Thực thi khả tuần tự

− Một thực thi được gọi là khả tuần tự nếu nó có cùng một kết xuất và tácđộng lên CSDL như khi thực thi tuần tự của cùng một giao tác Vì thực thi tuần tự làđúng và vì thực thi mỗi thực thi khả tuần tự có cùng một tác động như thực thi tuần tựnên các thực thi khả khả tuần tự cùng phải đúng

− Các thực thi mất mát thông tin khi cập nhật và phục hồi tranh chấp lànhững điển hình của thực thi bất khả tuần tự Ví dụ ta thực hiện hai giao dịch gửi tiền(Deposit) tuần tự sẽ nhận được khết quả khác khi thực hiện xen kẽ, nghĩa là có sự mấtmát thông tin Vì vậy thực thi xen kẽ là bất khả tuần tự Tương tự như vậy, việc thựcthi xem kẽ hai giao tác Chuyển tiền (Transfer) và PrintSum sau :

//Thủ tục tin tổng số dư hai tài khoản

Procedure PrintSum begin

Trang 10

− Mặc dù hai thực thi xem kẽ này là bất khả tuần tự nhưng lại có nhiềuthực thi khác khả tuần tự Ví dụ, cho hai giao tác Transfer và PrintSum được thực hiệnxen kẽ như sau:

Read,(Accounts[7]) returns the value $200

Write,(Accounts[7], $100)

Read,(Accounts[7]) returns the value $100

Read,( Accounts[ 861) returns the value $200

Write,(Accounts[86], $300)

Commit,

Read,(Accounts[86]) returns the value 5300

Commit,

Thực thi này có tác động tương tự như khi thực hiện Transfer theo sau đó là PrintSum

− Mặc dù thứ tự thực hiện của các thao tác trong thực thi tuần tự là khác sovới thực thi xen kẽ, nhưng kết quả của mỗi thao tác lại chính xác như khi thực thi xen

kẽ Vì thế thực thi xen kẽ như trên gọi là khả tuần tự

− Tính khả tuần tự là định nghĩa của tính chính xác cho điều khiển đồnghành trong các DBS

* Lịch biểu khả tuần tự:

− Lịch biểu của một giao dịch là một chuỗi các lệnh được thực hiện trong

hệ thống theo thứ tự thời gian Một lịch biểu đối với một tập các giao dịch phải baogồm tất cả các lệnh của tất cả các giao dịch này, và phải bảo toàn thứ tự mà các lệnhxuất hiện trong mỗi giao dịch cá thể theo thứ tự đó Lịch biểu tạo mối liên hệ ràngbuộc giữa các giao dịch với nhau

Một lịch biểu S được gọi là khả tuần tự nếu và chỉ nếu nó tương đương

tương tranh với một lịch biểu tuần tự Tính khả tuần tự được định nghĩa như thế cũngđược gọi là khả tuần tự theo tương tranh bởi vì nó được định nghĩa theo sự tươngđương tương tranh Từ đó, chúng ta có thể chỉ ra rằng chức năng cơ bản của bộ phậnđiều khiển đồng thời là tạo ra một lịch biểu khả tuần tự để thực hiện các giao tác đangchờ

Ví dụ về lịch biểu khả tuần tự: Có 3 giao dịch T1, T2, T3

Schedule 1 x = 0; x = x + 1; x = 0; x = x + 2; x = 0; x = x + 3 Hợp lệSchedule 2 x = 0; x = 0; x = x + 1; x = x + 2; x = 0; x = x + 3; Hợp lệSchedule 3 x = 0; x = 0; x = x + 1; x = 0; x = x + 2; x = x + 3; Bất hợp lệ

4 Sử dụng bộ quản lý khóa cơ bản:

Trong các hệ thống dùng khoá, bộ xếp lịch (scheduler) chính là bộ quản

lý khoá (lock manager, LM) Bộ quản lý giao dịch sẽ chuyển cho bộ quản lý khoá các

Trang 11

thao tác cơ sở dữ liệu (đọc hoặc ghi) và các thông tin kèm theo (như mục dữ liệu cầntruy xuất, định danh của giao dịch đưa ra yêu cầu) Sau đó, bộ quản lý khoá sẽ kiểmtra đơn vị khoá có chứa mục dữ liệu đó đã bị khoá hay chưa Nếu đã khoá, và nếu thểthức khoá đó không tương thích với thể thức của giao dịch đang yêu cầu, thao tác sẽ bịhoãn lại Ngược lại, khoá sẽ được đặt với thể thức mong muốn và thao tác này đượcchuyển cho bộ xử lý dữ liệu để truy xuất cơ sở dữ liệu thực sự Sau đó, bộ quản lý giaodịch được thông tin về các kết quả thực hiện Việc kết thúc giao dịch sẽ giải phóng cáckhoá của nó và làm khởi hoạt một giao dịch khác đang đợi truy xuất mục dữ liệu này.

{Các định nghĩa chuẩn bị cho các thuật toán được trình bày trong tiểu luận}

Declare-type

Operation: một trong số Begin-Transaction, Read, Write, Abort, hoặc Commit DataItem : một mục dữ liệu trong cơ sở dữ liệu phân tán

TransactionId: một giá trị duy nhất được gán cho mỗi giao dịch

DataVal: một giá trị có kiểu dữ liệu cơ bản (nghĩa là số nguyên, số thực,…) SiteId: một đinh danh duy nhất cho vị trí

Dbop: một bộ ba gồm {một phép toán trên cơ sở dữ liệu của ứng dụng}

opn: Operation data: DataItem tid: TransactionId Dpmsg: một bộ ba gồm {một thông báo từ bộ xử lý dữ liệu}

opn: Operation tid: TransactionId result: DataVal Scmsg: một bộ ba gồm {một thông báo từ bộ xếp lịch}

opn: Operation tid: TransactionId result: DataVal Transation ← một bộ hai gồm

tid: TransactionId body: thân giao dịch Message ← một chuỗi ký tự cần được truyền đi

Trang 12

tìm đơn vị khoá lu sao cho x lu

if lu chưa bị khoá or thể thức khoá lu tương thích với

Op then

begin

đặt khoá trên lu ở thể thức thích hợp gởi dop đến bộ xử lý dữ liệu

end

else đưa dop vào một hàng đợi của lu

end-if end

Abort or Commit:

begin

gởi dop đến bộ xử lý dữ liệu

end end-case

Op ← pm.opn

x ← pm.result

T ← pm.tid tìm đơn vị khoá lu sao cho x lu, giải phóng khoá trên lu do T giữ

if không còn khoá nào trên lu and

có những thao tác đang đợi khoá lu trong hàng đợi then

begin

SOP ← thao tác đầu tiên trong hàng đợi

Trang 13

SOP ← SOP {O là một thao tác trên hàng đợi có thể khoá lu ở

thể thức khoá tương thích với các thao tác hiên hành trong SOP }

đặt các khoá trên lu cho các thao tác trong SOP

for tất cả các phép toán trong SOP do

gởi mỗi thao tác đến bộ xử lý dữ liệu

end-for end-if

end

end-case

until forever

End {Basic LM}

5 Những điểm cần cải tiến của bộ quản lý Khóa cơ bản:

− Thuật toán khóa được cho trong Thuật toán 1 được trình bày ở trênkhông đồng bộ hoá chính xác các thực thi giao dịch Điều này là do khi tạo ra các lịchbiểu khả tuần tự, các thao tác khóa và giải phóng khóa cũng cần phải được điều phối

Vì vậy chúng ta minh họa nó bằng ví dụ như sau:

Ví dụ: Xét hai giao dịch sau đây:

− Dưới đây là một lịch biểu hợp lệ được bộ quản lý khóa tạo ra khi sửdụng Thuật toán 1:

S = {wl 1 (x) R 1 (x), W 1 (x), lr 1 (x), wl 2 (x), R 2 (x), W 2 (x), lr 2 (x), wl 2 (y),

R 2 (y), W 2 (y), lr 2 (y), C2, wl 1 (y), R 1 (y), W 1 (y), lr 1 (y), Cl}

Ở đây LRi(z) biểu thị thao tác giải phóng khoá trên z đang được Ti giữ

− Chú ý rằng S không khả tuần tự Bởi vì, nếu trước lúc thực hiện các giaodịch này, giá trị của x và y lần lượt là 50 và 20 Nếu S khả tuần tự, thì giá trị sau khithực hiện tương ứng là 102 và 38 nếu T1 thực hiện trước T2, hoặc là 101 và 39 nếu T2thực hiện trước T1 Tuy nhiên kết quả thực hiện S cho ra giá trị của x và y lần lượt là

102 và 39 Điều đó chứng tỏ S không khả tuần tự

− Vấn đề lịch biểu S trong ví dụ này là thuật toán khóa chốt đã giải phóngcác khoá được 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ị khoá (chẳng hạn x) không cần truy xuất nữa Tuy nhiên, bảnthân giao dịch đó đang khóa những mục khác (chẳng hạn y) sau khi nó giải phóngkhoá trên x Mặc dù điều này dường như có lợi vì làm tăng khả năng hoạt động đồngthời, nó cho phép các giao dịch đan xen với nhau, làm mất đi tính biệt lập và tính

nguyên tử tổng thể Đây chính là lập luận của phương pháp khoá chốt hai pha

(Two-Phase Locking, 2PL)

x ← x + 1 Write(x) Read(y)

y ← y – 1 Write(y) Commit

x ← x * 2 Write(x) Read(y)

y ← y * 2 Write(y) Commit

Trang 14

a Khóa 2 pha (Two Phase Locking – 2PL)

− 2PL là một trong những kỹ thuật hiệu quả trong việc khắc phục một sốđụng độ cũng như thời gian chết trong quá trình thực hiện các lệnh của các giao tác Mỗi giao tác phải yêu cầu một khóa S trước khi đọc và một khóa X trước khi ghi Nếu không có sự đụng độ nào xảy ra, khóa có thể được cấp và giao tác có thể thựchiện được, ngược lại, giao tác phải đợi đến khi sự đụng độ được gỡ bỏ

− 2PL nhằm đồng bộ hoá việc đọc và ghi Trước khi đọc mục dữ liệu x,phải khóa x (khóa do đọc) Trước khi ghi lên x, giao tác phải khóa mục x (khóa doghi)

→ Nhiệm vụ của bộ xếp lịch hai giai đoạn là quản lý khoá và điều khiển giao tác khinào lấy và khi nào giải phóng khoá

Quá trình cấp phát và thu hồi khóa được thể hiện ở biểu đồ khoá 2PL sau:

Hình 3: Biểu đồ Khóa 2PL

− Biểu đồ trên cho thấy bộ quản lý khóa giải phóng khóa ngay sau khihoàn tất việc truy xuất Điều này cho phép các giao dịch đang đợi khoá tiếp tục

tiến hành và nhận khoá, do vậy, làm tăng hoạt động đồng thời.

− Gọi Oper(T,x) là lệnh truy xuất mục dữ liệu x trong giao tác T Dựa vào

kỹ thuật khóa chốt hai giai đoạn, ta có thể chia giao tác thành hai giai đoạn:

 Giai đoạn tăng trưởng (growing phase), trong giai đoạn này nó nhận

các khoá và truy xuất các mục dữ liệu

Khi bộ lập lịch nhận được lệnh Oper(T,x), nó kiểm tra lệnh này có tranh chấp vớinhững lệnh truy xuất trên x khác, đã được bộ lập lịch cấp khóa

o Nếu nó tranh chấp, lệnh Oper(T,x) bị bị trì hoãn

o Nếu không tranh chấp, bộ lập lịch sẽ cấp 1 khóa cho x và gửi lệnh nàyđến bộ quản lý dữ liệu

Bộ lập lịch sẽ không giải phóng khóa cho đến khi bộ quản lý dữ liệu đã thực hiệnxong lệnh Oper(T,x)

 Giai đoạn thu hồi (shrinking phase) là giai đoạn giải phóng những khoá

của nó

− Khi bộ lập lịch bắt đầu giải phóng bất kỳ khóa nào của giao tác T thì nó

sẽ không cấp bất kỳ khóa nào cho T, cho dù các mục dữ diệu của T đòi hỏi khóa

− Nếu T cứ đòi hỏi khóa khi tiến trình giải phóng khóa xảy ra thìchương trình phát sinh lỗi và giao tác sẽ gọi lệnh Abort

Ngày đăng: 28/08/2016, 09:34

HÌNH ẢNH LIÊN QUAN

Hình  1: Các bộ phận quản lý thực hiện giao tác - Bao cao de tai
nh 1: Các bộ phận quản lý thực hiện giao tác (Trang 6)
Hình  2: Các bộ phận quản lý thực hiện giao dịch phân tán - Bao cao de tai
nh 2: Các bộ phận quản lý thực hiện giao dịch phân tán (Trang 7)
Hình  3: Biểu đồ Khóa 2PL - Bao cao de tai
nh 3: Biểu đồ Khóa 2PL (Trang 14)
Hình  4: Biểu đồ khoá hai pha nghiêm ngặt - Bao cao de tai
nh 4: Biểu đồ khoá hai pha nghiêm ngặt (Trang 17)

TỪ KHÓA LIÊN QUAN

w