chap 03 transaction

27
CƠ SỞ DỮ LIỆU NÂNG CAO Advanced Database IS - FIT - VMU 1 Fall 2010 IS – FIT – VMU

Upload: pham-van-tho

Post on 07-Nov-2014

26 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Chap 03 Transaction

CƠ SỞ DỮ LIỆU NÂNG CAO

Advanced Database IS - FIT - VMU 1 Fall 2010

IS – FIT – VMU

Page 2: Chap 03 Transaction

CHƯƠNG 3: GIAO DỊCH TRONG CSDL

3.1. Giới thiệu

3.2. Các tính chất của giao dịch

3.3. Các trạng thái của giao dịch

3.4. Lịch biểu

3.5. Tính khả tuần tự của lịch biểu

Advanced Database IS - FIT - VMU 2 Fall 2010

Page 3: Chap 03 Transaction

3.1 GIỚI THIỆU

Thuật ngữ giao dịch (Transaction) đề cập tới một tập hợp các lệnh tạo thành một đơn vị làm việc logic, hoặc nó được thực hiện một cách đầy đủ hoặc bị hủy bỏ hoàn toàn.

Ví dụ: Chuyển tiền từ tài khoản A sang tài khoản B là một giao dịch: • Kiểm tra tiền trong tài khoản A (có ≥ X không?).

• A = A – X.

• B = B + X.

Thường giao dịch được tạo ra bởi các chương trình người dùng được viết trong ngôn ngữ xử lý dữ liệu bậc cao hoặc ngôn ngữ lập trình (vd: SQL, C++, Java)

Fall 2010 Advanced Database IS - FIT - VMU 3

Page 4: Chap 03 Transaction

3.2 CÁC TÍNH CHẤT CỦA GIAO DỊCH

• Để đảm bảo tính toàn vẹn của dữ liệu, hệ CSDL phải duy trì các tính chất sau của giao dịch:

– Tính nguyên tử (Atomicity): Hoặc toàn bộ các thao tác của giao dịch được phản ánh đúng đắn trong CSDL hoặc không có gì cả.

– Tính nhất quán (Consistency): Sự thực hiện của một giao dịch phải bảo đảm tính nhất quán của CSDL.

– Tính cô lập (Isolation): Nhiều giao dịch có thể thực thi đồng thời nhưng mỗi giao dịch không cần biết đến các giao dịch khác đang thực hiện đồng thời. Các kết quả trung gian của giao dịch phải được che giấu trước các giao dịch khác.

– Tính lâu bền (Durability): Sau khi giao dịch hoàn thành, các thay đổi đã được tạo ra đối với CSDL vẫn còn ngay cả khi xảy ra sự cố hệ thống.

Fall 2010 Advanced Database IS - FIT - VMU 4

Page 5: Chap 03 Transaction

Atomicity: All actions of a transaction happen, or none happen.

Consistency: If a transaction is consistent, and the database starts from a consistent state, then it will end in a consistent state.

Isolation: The execution of one transaction is isolated from other transactions.

Durability: If a transaction commits, its effects persist in the database.

Fall 2010 Advanced Database IS - FIT - VMU 5

ACID PROPERTIES

Page 6: Chap 03 Transaction

THAO TÁC TRUY XUẤT DỮ LIỆU TRONG GIAO DỊCH

Transaction truy xuất dữ liệu sử dụng hai thao tác:

• Read_Item(X): Đọc mục X trong CSDL vào biến của chương trình (để đơn giản coi biến của chương trình cũng là X).

– Tìm địa chỉ của khối đĩa chứa mục X.

– Copy khối đĩa vào bộ đệm (buffer) trong bộ nhớ chính.

– Copy mục X từ bộ đệm vào biến X của chương trình.

• Write_Item(X): Ghi giá trị của biến X vào mục X trong CSDL.

– Tìm địa chỉ của khối đĩa chứa mục X.

– Copy khối đĩa vào bộ đệm trong bộ nhớ chính.

– Copy mục X từ biến X trong chương trình vào đúng vị trí trong bộ đệm.

– Lưu khối đĩa (sau khi đã thay đổi mục X) từ bộ đệm ngược trở lại ổ đĩa.

Fall 2010 Advanced Database IS - FIT - VMU 6

Page 7: Chap 03 Transaction

VÍ DỤ MINH HỌA CÁC TÍNH CHẤT ACID

• Giao dịch chuyển 50$ từ tài khoản A sang tài khoản B:

• Tính nguyên tử: Nếu giao dịch lỗi sau bước 3 và trước bước 6, hệ thống phải đảm bảo việc cập nhật không được phản ánh trong CSDL.

• Tính nhất quán: Tổng của A và B thì không thay đổi sau khi thực thi giao dịch (Dù giao dịch thành công hay thất bại).

• Tính lâu bền: Kết quả sau khi thực thi giao dịch được ghi lại lâu dài trong CSDL.

• Tính cô lập: Nếu giữa bước 3 và bước 6, một giao dịch khác được thực hiện một cách đan xen không mong muốn Trạng thái không nhất quán vẫn có thể xảy ra.

Fall 2010 Advanced Database IS - FIT - VMU 7

1. Read(A)

2. A = A - 50

3. Write(A)

4. Read(B)

5. B = B + 50

6. Write(B)

Page 8: Chap 03 Transaction

VÍ DỤ MINH HỌA CÁC TÍNH CHẤT ACID

Read(A)

A = A - 50

Write(A)

Read(B)

B = B + 50

Write(B)

Fall 2010 Advanced Database IS - FIT - VMU 8

Transaction A

Transaction B

Read(A) Read(B) Display(A + B)

Tính cô lập có thể được đảm bảo bằng cách thực hiện tuần tự Nhược điểm ?

Page 9: Chap 03 Transaction

3.3 CÁC TRẠNG THÁI CỦA GIAO DỊCH

Fall 2010 Advanced Database IS - FIT - VMU 9

• Khi giao dịch được thực hiện: Hoặc là giao dịch hoàn tất thành công, hoặc bị hủy bỏ hoàn toàn.

• Vì mục đích phục hồi, hệ thống cần lưu lại các trạng thái CSDL khi giao dịch bắt đầu, kết thúc, hoàn tất hay bị bỏ qua. Do vậy hệ thống phục hồi cần lưu vết của các hoạt động sau:

– BEGIN_TRANSACTION: Đánh dấu điểm bắt đầu thực thi giao dịch.

– READ/ WRITE: Đánh dấu hoạt động đọc, ghi các mục trong CSDL.

– END_TRANSACTION: Đánh dấu điểm kết thúc của giao dịch.

Page 10: Chap 03 Transaction

3.3 CÁC TRẠNG THÁI CỦA GIAO DỊCH

• COMMIT_TRANSACTION: Cho biết giao dịch hoàn tất thành công.

• ROLLBACK (ABORT): Giao dịch kết thúc không thành công, những thay đổi do giao dịch tạo ra phải bị tháo bỏ (undone).

Fall 2010 Advanced Database IS - FIT - VMU 10

Page 12: Chap 03 Transaction

SYSTEM LOG

Fall 2010 Advanced Database IS - FIT - VMU 12

FAILED

• Giao dịch gặp lỗi trong quá trình thực hiện.

RECOVERY

• Hệ thống cần khôi phục lại trạng thái trước khi giao dịch bắt đầu.

TRACKING

• Chiến lược lưu vết các hoạt động của giao dịch.

• Log được lưu trên đĩa Không chịu ảnh hưởng của các lỗi thông thường.

• Log được sao lưu định kz.

Page 13: Chap 03 Transaction

CÁC LOẠI LOG RECORD

T: Transaction_ID: Được tự động tạo ra bởi hệ thống để định danh mỗi giao dịch.

Fall 2010 Advanced Database IS - FIT - VMU 13

[Start_Transaction, T]

Cho biết giao dịch T bắt đầu được thực hiện.

[Write_Item, T, X, old_value, new_value]

Cho biết giao dịch T đã thay đổi giá trị của mục dữ liệu X từ old_value thành new_value.

[Read_Item, T, X]

Cho biết giao dịch T đọc giá trị của mục dữ liệu X.

[Commit, T]

Cho biết giao dịch T đã kết thúc thành công.

[Abort, T]

Cho biết giao dịch T đã bị hủy bỏ.

Page 14: Chap 03 Transaction

3.4 LỊCH BIỂU (SCHEDULE OR HISTORY) • Là một dãy (có thứ tự) các thao tác

của một tập các giao dịch mà trong đó thứ tự của các thao tác trong mỗi giao dịch được bảo toàn.

• Ví dụ: Xét hai giao dịch chuyển tiền:

10$ từ A B

20$ từ B C

Fall 2010 Advanced Database IS - FIT - VMU 14

T1 T2

Read(A)

Read(B)

A = A – 10

B = B – 20

Write(A)

Write(B)

Read(B)

Read(C)

B = B + 10

C = C + 20

Write(B)

Write(C)

T1

Read(A)

A = A – 10

Write(A)

Read(B)

B = B + 10

Write(B)

T2

Read(B)

B = B – 20

Write(B)

Read(C)

C = C + 20

Write(C)

Page 15: Chap 03 Transaction

LỊCH BIỂU TUẦN TỰ

Fall 2010 Advanced Database IS - FIT - VMU 15

• Lịch biểu tuần tự (Serial Schedule): Là lịch biểu mà trong mỗi giao dịch các thao tác được thực hiện kế tiếp nhau, không có thao tác của giao dịch khác xen vào (Thực hiện lần lượt, hết giao dịch này đến giao dịch khác)

T1 T2

Read(A)

A = A – 10

Write(A)

Read(B)

B = B + 10

Write(B)

Read(B)

B = B – 20

Write(B)

Read(C)

C = C + 20

Write(C)

T1

Read(A)

A = A – 10

Write(A)

Read(B)

B = B + 10

Write(B)

T2

Read(B)

B = B – 20

Write(B)

Read(C)

C = C + 20

Write(C)

• Không thể có đụng độ trong một lịch biểu tuần tự.

• Với một tập S gồm n giao dịch {T1, T2, .., Tn} sẽ có n! lịch biểu tuần tự.

Page 16: Chap 03 Transaction

LỊCH BIỂU TUẦN TỰ

Feasible solution ?

Schedule

Serial

Fall 2010 Advanced Database IS - FIT - VMU 16

Page 17: Chap 03 Transaction

LỊCH BIỂU KHÔNG TUẦN TỰ

Fall 2010 Advanced Database IS - FIT - VMU 17

• Lịch biểu không tuần tự (Nonserial Schedule): Là lịch biểu mà các thao tác trong các giao dịch được đan xen vào nhau.

T1

Read(A)

A = A – 10

Write(A)

Read(B)

B = B + 10

Write(B)

T2

Read(B)

B = B – 20

Write(B)

Read(C)

C = C + 20

Write(C)

T1 T2

Read(A)

Read(B)

A = A – 10

B = B – 20

Write(A)

Write(B)

Read(B)

Read(C)

B = B + 10

C = C + 20

Write(B)

Write(C)

Page 18: Chap 03 Transaction

3.5 TÍNH KHẢ TUẦN TỰ CỦA LỊCH BIỂU

Fall 2010 Advanced Database IS - FIT - VMU 18

• Lịch biểu gọi là khả tuần tự (Serializable): nếu nó tương đương với một lịch biểu tuần tự.

• Tương đương theo nghĩa cho ra cùng một trạng thái CSDL sau khi kết thúc việc thực hiện lịch biểu.

• Lịch biểu bất khả tuần tự nếu nó không tương đương với một lịch biểu tuần tự.

Page 19: Chap 03 Transaction

VÍ DỤ

Fall 2010 Advanced Database IS - FIT - VMU 19

T1 T2

Read(A)

Read(B)

A = A-10

B = B-20

Write(A)

Write(B)

Read(B)

Read(C)

B = B+10

C = C+20

Write(B)

Write(C)

T1 T2

Read(A)

A = A-10

Read(B)

Write(A)

B = B-20

Read(B)

Write(B)

B = B+10

Read(C)

Write(B)

C = C+20

Write(C)

T1 T2

Read(A)

A = A-10

Write(A)

Read(B)

B = B+10

Write(B)

Read(B)

B = B-20

Write(B)

Read(C)

C = C+20

Write(C)

Page 20: Chap 03 Transaction

VÍ DỤ LỊCH BIỂU KHẢ TUẦN TỰ

Fall 2010 Advanced Database IS - FIT - VMU 20

LỊC

H B

IỂU

TU

ẦN

TỰ

T1 T2 A B C

LỊC

H B

IỂU

KH

Ả T

UẦ

N T

T1 T2 A B C

Read(A) 60 30 10 Read(A) 60 30 10

A = A-10 Read(B) 30

Write(A) 50 30 10 A = A-10

Read(B) 30 B = B-20

B = B+10 Write(A) 50 30 10

Write(B) 50 40 10 Write(B) 50 10 10

Read(B) 40 Read(B) 10

B = B-20 Read(C) 10

Write(B) 50 20 10 B = B+10

Read(C) 10 C = C+20

C = C+20 Write(B) 50 20 10

Write(C) 50 20 30 Write(C) 50 20 30

Page 21: Chap 03 Transaction

VÍ DỤ LỊCH BIỂU BẤT KHẢ TUẦN TỰ

Fall 2010 Advanced Database IS - FIT - VMU 21

LỊC

H B

IỂU

TU

ẦN

TỰ

T1 T2 A B C

LỊC

H B

IỂU

BẤ

T K

HẢ

TU

ẦN

TỰ

T1 T2 A B C

Read(A) 60 30 10 Read(A) 60 30 10

A = A-10 A = A-10

Write(A) 50 30 10 Read(B) 30

Read(B) 30 Write(A) 50 30 10

B = B+10 B = B-20

Write(B) 50 40 10 Read(B) 30

Read(B) 40 Write(B) 50 10 10

B = B-20 B = B+10

Write(B) 50 20 10 Read(C) 10

Read(C) 10 Write(B) 50 40 10

C = C+20 C = C+20

Write(C) 50 20 30 Write(C) 50 40 30

Page 22: Chap 03 Transaction

Fall 2010 Cơ sở dữ liệu nâng cao 22

Page 23: Chap 03 Transaction

Fall 2010 Cơ sở dữ liệu nâng cao 23

VÍ DỤ

Page 24: Chap 03 Transaction

Fall 2010 Cơ sở dữ liệu nâng cao 24

VÍ DỤ

Page 25: Chap 03 Transaction

Fall 2010 Cơ sở dữ liệu nâng cao 25

VÍ DỤ

Page 26: Chap 03 Transaction

Fall 2010 Cơ sở dữ liệu nâng cao 26

VÍ DỤ

Page 27: Chap 03 Transaction

Fall 2010 Advanced Database IS - FIT - VMU 27

Q & A