giao dich

begin transaction_Reservation

begin

input(fight_no,date,customer_name);

  EXEC SQL SELECT STSOLD, CAP INTO temp1, temp2

       FROM FLIGHT where FNO = fight_no and DATE = date;

if temp1 = temp2 then output(“no free seats");

                abort

else

   EXEC SQL UPDATE FLIGHT SET STSOLD = STSOLD +1

     WHERE FNO = fight_no and DATE = date;

      EXEC SQL INSERT into FC(FNO,DATE,CNAME,SPECIAL)

        VALUES (fight_no, date, customer_name, null);

    commit;

output(“reservation completed");

end Reservation.

Giao dịch xa bao gồm 1 vài yêu cầu có thể truy nhập dữ liệu chỉ ở một site đơn 

BEGIN WORK:

UPDATE CUSTOMER

  SET CUS_BALANCE=CUS_BALANCE+120

WHERE CUS_NUM=’100’;

INSERT INTO INVOICE (CUS_NUM,INV_DATE,INV_TOTAL) VALUE(‘100’,29-JUL-2007’,120.00);

COMMIT WORK;

Một giao dịch phân tán cho phép một giao dịch tham chiếu một vài site DP (cục bộ hay ở xa) 

BEGIN WORK:

SELECT *

     FROM PRODUCT

     WHERE PROD_NUM=’231238’;

UPDATE  CUSTOMER

   SET  CUS_BALANCE=CUS_BALANCE+120

   WHERE CUS_NUM=’100’;

INSERT INTO INVOICE (CUS_NUM,INV_DATE,INV_TOTAL) VALUE(‘100’,29-JUL-2007’,120.00);

COMMIT WORK;

Một lịch biểu  S được  gọi là nối tiếp hóa nếu nó tương đương với một lịch biểu  nối tiếp nào đó.

VD: 3 lịch biểu sau được nối tiếp hóa và tương đương

S1 = {R1(A);W1(A);R1(B);W1(B);C1;R2(A);R2(B);C2; }

S2 = {R1(A);W1(A);R2(A);R2(B);C2;R1(B);W1(B);C1}

S3 = {R1(A);W1(A);R2(A);R1(B);W1(B);C1;R2(B);C2}

Các giải thuật điều khiển tương tranh

 - Bi quan:

validate -> read -> compute -> write (commit)

- Lạc quan:

 read -> compute -> validate -> write (commit)

Cách thức

a. Dựa trên khóa

b. Thứ tự nhãn thời gian

Một thao tác có thể xử lý nếu mọi bước đụng độ của các gỉa thiết rằng giao dịch T muốn thao tác trên đối tượng x:

 Case operation of:

read: if TS(T) < WTS(x) then reject (reschedule) read;

         else begin

                      execute read(x);

                      RTS(x) := max{RTS(x);TS(T)g;

                end.

write: if TS(T) < max{RTS(x);WTS(x)} then reject write;

          else begin

                   execute write(x);

                   WTS(x) := TS(T);

                 end.

end case.

Bạn đang đọc truyện trên: AzTruyen.Top

Tags: #giao