1. Trang chủ
  2. » Công Nghệ Thông Tin

bài giảng chương ii quản lý truy xuất đồng thời

140 304 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 140
Dung lượng 1,36 MB

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

Nội dung

Các thao tác của giao tác Giả sử CSDL gồm nhiều đơn vị dữ liệu  Một đơn vị dữ liệu element  Có một giá trị  Được truy xuất và sửa đổi bởi các giao tác Quan hệ relation - Lớp class 

Trang 1

Chương II Quản lý truy xuất

đồng thời

Trang 2

Nội dung

 Giới thiệu

 Khái niệm về giao tác

 Các vấn đề truy xuất đồng thời

 Lịch thao tác

 Các kỹ thuật khóa dữ liệu

 Kỹ thuật nhãn thời gian

Trang 3

Giới thiệu

 Thực tế, CSDL được khai thác một cách đồng thời bởi nhiều người sử dụng Thậm chí còn có nhiều tiến trình trong một chương trình cũng có thể được thực hiện đồng thời.

 Ví dụ: hệ thống đặt chỗ trên các chuyến bay của một hãng hàng không Nhiều đại lý có thể cùng bán vé Hành khách có thể mua vé, đổi vé, trả vé do đó danh sách khách hàng và số ghế của các chuyến bay sẽ bị thay đổi Chuyện gì sẽ xảy ra nếu hai hay nhiều đại lý cùng bán một ghế cho nhiều khách hàng? Hệ quản trị CSDL này phải có khả năng giải quyết vấn

đề tranh chấp đó để không một ghế nào trên một chuyến bay

có thể bán nhiều hơn một lần.

Trang 4

Khái niệm về giao tác (Transaction)

 Định nghĩa

 Tính chất ACID của giao tác

 Các thao tác của giao tác

 Trạng thái của giao tác

Trang 5

Định nghĩa

 Giao tác là 1 đơn vị xử lý nguyên tố gồm 1 chuỗi các hành động tương tác lên CSDL Khi thực hiện một giao tác hoặc phải thực hiện tất cả các hành động của

nó hoặc thì không thực hiện hành động nào hết

CSDL nhất quán 1 Giao tác CSDL nhất quán 2

Trang 6

Ví dụ

Trang 7

Tính chất ACID của giao tác

Trang 8

Ví dụ 1

 A=100, B=200 (A+B=300)

 Tại thời điểm sau khi write(A,t)

 A=50, B=200 (A+B=250) - CSDL không nhất quán

 Tại thời điểm sau khi write(B,t)

Trang 9

Tình huống

 Đặt Ti là một giao dịch chuyển 50 USD từ tài khoản

A đến tài khoản B giao dịch này được định nghĩa như sau:

Trang 10

 Giả sử trước khi thực hiện giao dịch Ti, các giá trị của các tài khoản A và B tương ứng là 1000USD và 2000USD Trong khi thực hiện giao dịch Ti, một lỗi xảy ra (phần cứng, phần mềm,, mất điện,…) ngăn chặn Ti hoàn thành thực hiện giao dịch chuyển khoản Giả sử lỗi này xảy ra sau khi thao tác Write(A) đã được thực hiện và trước khi thao tác Write(B) được thực hiện.

 Trong trường hợp này, giá trị cùa tài khoản A và B được ghi

Tình huống

Trang 11

Tính chất ACID của giao tác (tt)

 Tính Nhất quán (C onsistency)

 Bất kỳ CSDL nào thì mọi ràng buộc tòan vẹn phải thỏa Tại bất kỳ thời điểm mà mọi RBTV được thỏa gọi là tính nhất quán.

 Một giao tác phải biến CSDL từ trạng thái nhất quán này sang trạng thái nhất quán khác không được phá vở trạng thái nhất quán E1 T E2 (E1nhất quán thì E2 phải nhất quán).

 Ví dụ:phái là nam hoặc nữ, nhưng gõ đến phái Enter đi qua mà cho phép thì không còn trạng thái nhất quán.

Trang 13

Tính chất ACID của giao tác (tt)

quanh tôi có n người khác đang chạy Hệ thống làm sao bảo đảm khi có n người chạy 1 lúc hệ thống làm sao bảo đảm n người này chạy một mình

Trang 15

 Như ví dụ trên, khi CSDL ở trạng thái không toàn vẹn trong giao dịch chuyển tiền từ A đến B đang thực hiện, ở đó tài khoản A đã giảm đi nhưng chưa tăng tài khoản B Nếu một giao dịch thứ hai chạy đồng thời đọc A và B tại thời điểm trung gian này

và tính tổng A+B, nó sẽ quan sát thấy một giá trị không đúng đắn

 Hơn nữa, nếu giao dịch thứ hai thực hiện Việc cập nhật trên A và B và dựa vào những giá trị không đúng đắn mà nó nhận được, CSDL có thể để lạimột trạng thái không toàn vẹn sau khi cả hai giao

Trang 16

Tính chất ACID của giao tác (tt)

Trang 17

 Tính bền vững đảm bảo rằng một khi giao dịch đượchoàn thành, tât cả các cập nhật trên CSDL là bền

vững thậm chí nếu có lỗi hệ thống sau khi giao dịch hoàn thành thực hiện Giả sử một lỗi hệ thống có thể dẫn đến mất mát dữ liệu trong bộ nhớ chính, nhưng

dữ liệu được ghi vào đĩa không bao giờ bị mất

Trang 18

Các thao tác của giao tác

 Giả sử CSDL gồm nhiều đơn vị dữ liệu

 Một đơn vị dữ liệu (element)

 Có một giá trị

 Được truy xuất và sửa đổi bởi các giao tác

Quan hệ (relation) - Lớp (class)

Khối dữ liệu trên đĩa (block) / trang (page)

Trang 19

Các thao tác của giao tác (tt)

 Input(X)

 Read(X, t)

X t

Trang 21

Ví dụ (tt)

Hành động Read(A,t) t:=t*2 Write(A,t) Read(B,t) t:=t*2 Write(B,t) Output(A) Output(B)

t 8 16 16 8 16 16 16 16

Mem A Mem B Disk A Disk B 8

8 16 16 16 16 16 16

8 8 16 16 16

8 8 8 8 8 8 16 16

8 8 8 8 8 8 8 16

Trang 22

Trạng thái của giao tác

Trang 23

Trạng thái của giao tác

 Active (kích hoạt)

 Ngay khi bắt đầu thực hiện thao tác đọc/ghi

 Partially committed (hoàn thành bộ phận)

 Sau khi lệnh thi hành cuối cùng thực hiện

Trang 24

T-SQL đặc trưng của giao tác

Trang 25

Các vấn đề truy xuất đồng thời

Vấn đề mất dữ liệu đã cập nhật (Lost Update)

Vấn đề không thể đọc lại được(Unrepeated Read)

Vấn đề dữ liệu chưa hoàn tất (Uncommitted

Dependency )

Trang 26

Vấn đề mất dữ liệu đã cập nhật

Tình trạng xảy ra khi hai hay nhiều thao tác của các giao tác khác nhau cùng yêu cầu truy cập một mục dữ liệu Các dữ liệu đã được các thao tác trước cập nhật nhưng lại bị các thao tác sau cập nhật lại làm thay đổi kết quả mong muốn.

Trang 27

 A và B đọc dữ liệu thấy 500 cuốn nên đều đồng ý bán.

 Vào lúc T2 nhân viên A sẽ thực hiện cập nhật số sách từ

Trang 28

Vấn đề mất dữ liệu đã cập nhật

 Xét 2 giao tác

Giả sử T 1 và T 2 được thực hiện đồng thời

Dữ liệu đã cập nhật tại t của T t1 Read(A)

A=50 T1 T2

Read(A)

T2Read(A) A:=A+20 Write(A)

T1Read(A) A:=A+10 Write(A)

Trang 29

Vấn đề không thể đọc lại được

(Unrepeated Read)

 Ví dụ: giả sử nhà sách còn 200 cuốn sách

 Vào lúc T1 nhân viên A bán cho khách 150 cuốn, sẽ thực hiện cập nhật sách từ 200 thành 50 (giao dịch chưa hoàn thành chẳng hạn vì việc giao nhận tiền chưa xong).

 Sau đó lúc T2, B nhận được yêu cầu mua 100 cuốn sách, nếu B đọc được dữ liệu chưa hoàn tất thì B sẽ từ chối bán 100 cuốn sách này.

 Nếu vào lúc T3 vì lý do nào đó chẳng hạn không đủ tiền khách

hàng của A không mua 150 cuốn sách nữa Giao tác bán hàng của

A sẽ không thực hiện nên quay về trạng thái số sách còn lại là 200

 Nhưng B từ chối khách hàng.

 Nếu B không đọc được dữ liệu từ lúc T1 đến T3 thì sẽ như thế nào?

Trang 30

Vấn đề dữ liệu chưa hoàn tất (rác)

 Giả sử nhân viên C cần tổng hợp 5 dòng dữ liệu

1 2 3 4 5 để làm một bản báo cáo.

T1: C đọc và đưa các dòng 1 2 3 4 vào báo cáo

T2: D lại xóa dòng 1 thay bằng dòng 6

T3: C đọc tiếp 5 6 đưa vào báo cáo

Vậy báo cáo này xử lý cả dữ liệu cũ và mới  sai

Trang 31

Các mức cô lập của Transaction

 Các dữ liệu bẩn (dirty data) là một thuật ngữ chung chỉ các dữ liệu được ghi bằng một giao tác nhưng còn chưa được lưu giữ lại (committed) Một dirty read dùng để đọc các dữ liệu bẩn Điều nguy hiểm của việc đọc các dữ liệu bẩn là ở chỗ một giao tác ghi nó có thể bị bỏ dở Nếu vậy thì các dữ liệu bẩn sẽ bị đẩy ra khỏi cơ sở dữ liệu và mọi người được phép xử sự như là các dữ liệu đó chưa bao giờ tồn tại Nếu một giao tác khác nào đó đã đọc các dữ liệu bẩn thì giao tác đó có thể lưu giữ hoặc thực hiện một hành động nào đó phản ánh sự hiểu biết của nó về dữ liệu bẩn.

Trang 32

Các mức cô lập của Transaction

 Đôi lúc dirty read có ý nghĩa, đôi lúc nó không

có ý nghĩa Lúc khác nó có ý nghĩa rất nhỏ đủ

để tạo ý nghĩa về nguy cơ của một dirty read phụ và như vậy làm ngăn cản:

 Công việc tốn thời gian của hệ quản trị cơ sở

dữ liệu cần để ngăn ngừa dirty read và

Mất tính song song gây ra từ sự chờ đợi cho

Trang 33

 Giả sử rằng có các dirty read Có 3 tài khoản A1, A2, A3với 100$, 200$ và 300$ tương ứng Giả sử rằng giao tác T1thực hiện chương trình P để chuyển 150$ từ A1 đến A2.Cùng một thời gian, giao tác T2 chạy chương trình P đểchuyển 250$ từ A2 đến A3 Có khả năng có các dãy sự kiệnsau:

 1 T2 thực hiện bước 1 và thêm 250$ vào A3 và bây giờA3 có 550$

 2 T1 thực hiện bước 1 và thêm 150$ và A2 và bây giờA2 có 350$

 3 T2 thực hiện kiểm tra của bước 2 và tìm ra rằng A2 có

Các mức cô lập của Transaction

Trang 34

 4 T1 thực hiện kiểm tra của bước 2 và tìm

ra rằng T1 không có đủ tiền (100$) để cho phép chuyển 150$ từ A1 sang A2.

 5 T2 thực hiện bước 2b Nó trừ đi 250$ khỏi A2 và bây giờ A2 có 100$ và kết thúc.

 6 T1 thực hiện bước 2a Nó trừ 150$ khỏi

A2, bây giờ A2 có –50$ và kết thúc.

Các mức cô lập của Transaction

Trang 35

 Tổng số tiền không thay đổi; trong ba tài khoản vẫn còn 600$ Nhưng bởi vì T2 đọc

dữ liệu bẩn ở bước 3 trong 6 bước trên, chúng ta không bảo vệ được việc một tài khoản trở nên âm, đó là mục đích của việc kiểm tra tài khoản thứ nhất để xem tài khoản này có số tiền thích hợp hay không.

Các mức cô lập của Transaction

Trang 36

Lịch thao tác (schedule)

 Giới thiệu

 Định nghĩa

 Lịch tuần tự (Serial schedule)

 Lịch khả tuần tự (Serializable schedule)

Trang 37

 Cho phép nhiều giao tác cùng truy xuất dữ liệu

 Gây ra nhiều phức tạp về nhất quán dữ liệu

 Tuy nhiên có 2 lý do để thực hiện đồng thời:

 Tận dụng tài nguyên và thông lượng

 Giảm thời gian phản hồi của các giao tác

Trang 38

Hai lý do để thực hiện đồng thời

- Một giao tác gồm nhiều bước: hành động I/O trên đĩa, hành

động xử lý trên CPU Do đó hành động I/O trên đĩa và xử lý trên CPU có thể thực hiện song song với nhau.

- Trong khi 1 giao tác đang thực hiện đọc/ghi trên đĩa thì giao tác khác thực hiện tính toán trên CPU.

- CPU và đĩa có ít thời gian rảnh rỗi.

Trang 39

Hai lý do để thực hiện đồng thời

- Giảm thời gian phản hồi của các giao tác

- Có nhiều giao tác với thời gian thực hiện ngắn dài khác nhau.

- Nếu thực hiện tuần tự, có thể 1 giao tác ngắn phải chờ 1 giao tác dài trước trước đó -> trì hoãn.

- Nếu các giao tác thực hiện với những dữ liệu khác nhau thì nên thực hiện song song -> chia sẽ chu kỳ của CPU và truy cập đĩa

 Khi có nhiều giao tác thực hiện đồng thời, tính nhất quán

CSDL có thể bị phá vỡ mặc dù cá nhân mỗi giao tác vẫn thực hiện đúng đắn.Vì vậy cần có khái niệm Lịch thao tác

(schedule) để xác định những thực hiện nào đảm bảo tính nhất quán Bộ phận quản lý các lịch thao tác này gọi là Bộ lập lịch (scheduler).

Trang 40

Bộ lập lịch (Scheduler)

 Là một thành phần của DBMS có nhiệm vụ lập 1

lịch để thực hiện n giao tác xử lý đồng thời

Transaction manager

Scheduler

Read/Write request

Trang 41

Bộ lập lịch (Scheduler) (tt)

 Một lịch thao tác S được lập từ n giao tác T1,

T2, …,Tn được xử lý đồng thời là 1 thứ tự

thực hiện các hành động của n giao tác này

 Thứ tự xuất hiện của các thao tác trong lịch phải giống với thứ tự xuất hiện trong giao tác

Trang 42

Ví dụ

T2

T1

Read(A,s) s:=s*2

t:=t+100

Read(A,t) t:=t+100 Write(A,t) Read(B,t) Write(B,t)

s:=s*2

Write(A,s) Read(B,s) Write(B,s)

Trang 43

Lịch tuần tự (Serial schedule)

Một lịch S được gọi là tuần tự nếu các hành động của các giao tác T i (i=1 n) được thực hiện liên tiếp nhau

T1

T2

Tn

… Thời gian

S

T3

Trang 44

Lịch tuần tự (tt)

T2

T1

Read(A,s) s:=s*2 t:=t+100

Read(A,t) t:=t+100

s:=s*2

Write(A,s) Read(B,s) Write(B,s)

Trang 45

Lịch tuần tự (tt)

Trang 46

Lịch tuần tự (tt)

Trang 47

Lịch tuần tự (tt)

950 2050 855

Trang 48

Lịch tuần tự (tt)

Trang 49

Lịch tuần tự (tt)

900

2100 850

Trang 50

Lịch tuần tự (tt)

Trang 51

Lịch tuần tự (tt)

950

855 2050

Trang 52

Lịch tuần tự (tt)

900 950

Trang 53

Lịch tuần tự (tt)

Trang 54

Lịch khả tuần tự

(Serializable schedule)

Một lịch S được lập từ n giao tác T 1 , T 2 , …, T n xử lý đồng thời được gọi là khả tuần tự nếu nó cho cùng kết quả với 1

lịch tuần tự nào đó được lập từ n giao tác này

T1

T2

T S

Trang 55

 S là khả tuần tự

T2

T1

Read(A,s) s:=s*2

Trang 57

Lịch khả tuần tự (tt)

 Khi S5 kết thúc

A và B bằng nhau

Trạng thái cuối cùng nhất quán

 S5 khả tuần tự, có kết quả giống với lịch tuần

Trang 58

Bài tập

Trang 59

Bài tập

Trang 60

 Ý tưởng

 Xét 2 hành động liên tiếp nhau trong 1 lịch thao tác

 Nếu thứ tự của chúng được đổi cho nhau

 Thì hoạt động của ít nhất 1 giao tác có thể thay đổi

Hành động 1 Hành động 2

Hành động 1’

Hành động 2’

Trang 61

 Cho lịch S có 2 giao tác Ti và Tj, xét các trường hợp

 ri(X) ; rj(Y)

 Không bao giờ có xung đột, ngay cả khi X=Y

 Cả 2 thao tác không làm thay đổi giá trị của đơn vị dữ liệu

X, Y

 ri(X) ; wj(Y)

 Không xung đột khi X  Y

 Tj ghi Y sau khi Ti đọc X, giá trị của X không bị thay đổi

 Ti đọc X không ảnh hưởng gì đến Tj ghi giá trị của Y

 wi(X) ; rj(Y)

 Không xung đột khi X  Y

 w (X) ; w (Y)

Trang 62

 Hai hành động xung đột nếu

 Thuộc 2 giao tác khác nhau

 Truy xuất đến cùng 1 đơn vị dữ liệu

 Có ít nhất một hành động ghi (write)

 không thể hoán vị thứ tự

Ti Tj

Trang 63

Read(A) Write(A) Read(B) Write(B)

Write(A) Read(B) Write(B)

Read(B) Write(B)

Write(A)

Read(B) Write(B)

Trang 65

Read(A,t) t:=t+100 Write(A,t)

Read(B,t)

s:=s*1

Write(A,s) Read(B,s) Write(B,s)

25 25 125

25

125

S 5

Serializable nhưng không conflict-serializable

Trang 66

Conflict-Serializability (tt)

Trang 67

Conflict-Serializability (tt)

Trang 68

Kiểm tra tính khả tuần tự của một lịch

 Nhập: Lịch biểu S cho một tập giao dịch T1,T2,

…, Tk

 Xuất: Khẳng định S có tuần tự hay không?

 Nếu có thì đưa ra một lịch biểu tuần tự tương

đương với S

 Phương pháp: Tạo một đồ thị có hướng G

Trang 69

Kiểm tra tính khả tuần tự của một lịch (tt)

 Xây dựng đồ thị có hướng:

 Mỗi giao tác Ti là một nút của đồ thị G

 Nếu có Tj phát ra một yêu cầu Write(A) sau một giao tác Ti đã phát ra yêu cầu Read(A) thì vẽ một cung từ Ti

Tj

 Nếu có một giá trị Tj phát ra một yêu cầu Read(A) sau một giao tác Ti đã phát sau một yêu cầu Write(A) thì vẽ một cung đi từ Ti Tj

 Nếu có một yêu cầu Tj phát ra một yêu cầu Write(A)

sau một yêu cầu Ti đã phát ra một yêu cầu Write(A) thì

vẽ cung Ti Tj

 Nếu G có chu trình  S không khả tuần tự

Trang 70

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

 Lịch biểu tuần tự

 A) Lịch biểu sau là tuần tự

S={W2(X), W2(Y), R2(Z), C2, R1(X), W1(X), C1,

R3(X), R3(Y), R3(Z), C3}

 B) Lịch biểu sau là khả tuần tự

Trang 71

Ví dụ

 S1: W2(X),W1(X),R3(X),R1(X),W2(Y),R3(Y),R3(X),R2(X)

 Bất khả tuần tự vì đồ thị có chu trình

Trang 72

Ví dụ

 S1:R2(Z),W2(X),W2(Y),W1(X),R1(X),R3(X),R3(Z),R3(Y)

Trang 73

Bài tập

T2

T1

Read(A) Read(B)

Write(A) Write(B)

Read(A)

Write(A) Read(B)

Trang 74

Bài tập

T2

T1

Read(A) Read(B)

Write(A)

Write(B)

Read(A) Write(A) Read(B)

Write(B)

Trang 76

Write(D) Write(B)

T3

Trang 78

Serial

Trang 79

View-Serializability (tt)

 Ý tưởng

 Xét trường hợp

 Nhận xét

 Sau khi T ghi A xong mà không có giao tác nào đọc giá trị của A

 Khi đó, hành động wT(A) có thể chuyển đến 1 vị trí khác trong lịch thao tác mà ở đó cũng không có giao tác nào đọc A

Trang 80

View-Serializability (tt)

 Định nghĩa

 S, S’ là những lịch thao tác view-equivalent

 1- Nếu trong S có wj(A) … rj(A) thì trong S’ cũng có wj(A) … rj(A)

 2- Nếu trong S có ri(A) là thao tác đọc giá trị ban đầu của A

thì trong S’ cũng ri(A) đọc giá trị ban đầu của A

 3- Nếu trong S có wi(A) là thao tác ghi giá trị sau cùng lên A

thì trong S’ cũng có wi(A) ghi giá trị sau cùng lên A

 Một lịch thao tác S là view-serializable

 Nếu S là view-equivalent với một lịch thao tác tuần tự nào đó

Trang 81

View-Serializability (tt)

 S conflict-serializable  S view-serializable

 Chứng minh

 Hoán vị các hành động không xung đột

 Không làm ảnh hưởng đến những thao tác đọc

 Cũng không làm ảnh hưởng đến trạng thái CSDL

Trang 83

View-Serializability (tt)

Trang 84

View-Serializability (tt)

 Quan sát lịch S thấy các giao dịch T4 và T6 thực hiện các giao tác write (A) mà không thực hiện một lệnh Read (A) nào Các thao tác này gọi là thao tác mù Các thao tác ghi mù xuất hiện trong một lịch biểu view-

serializability nào đó thì lịch biểu không conflict serializability

Trang 85

Các kỹ thuật khóa dữ liệu

 Giới thiệu

 Kỹ thuật khóa đơn giản

 Kỹ thuật khóa đọc ghi

 Kỹ thuật khóa 2 pha

Trang 86

Giới thiệu

 Các giao tác trước khi muốn đọc/viết lên 1 đơn vị dữ liệu phải phát ra 1 yêu cầu xin khóa (lock) đơn vị dữ liệu đó

 Lock(A) hay L(A)

 Yêu cầu này được bộ phận quản lý khóa xử lý

 Nếu yêu cầu được chấp thuận thì giao tác mới được phép đọc/ghi lên đơn vị dữ liệu

Trang 87

Kỹ thuật khóa đơn giản

 Nếu xuất hiện 2 giao tác tương tranh thì áp dụng cơ chế chờ: một giao tác xử lý hạt dữ liệu A sẽ khóa hạt dữ liệu này cho đến khi hòan tất Các giao tác còn lại phải chờ cho đến khi hạt dữ liệu này được giải phóng

 Trước khi muốn thao tác lên 1 đơn vị dữ liệu A thì phải phát ra 1 yêu cầu xin khóa trên A

 Nếu yêu cầu trên khóa A được chấp thuận thì được thao tác trên A (Lock) Sau khi thao tác xong thì phải phải phát ra lệnh giải phóng A (Unlock)

 Nếu yêu cầu trên khóa không được chấp thuận thì chờ

 Hai kiểu khóa

 Khóa đọc (Read lock): chỉ cho phép một giao tác đọc

 Khóa ghi (Write lock): cho phép cả hai giao tác đọc và ghi

Bộ phận cấp phát khóa (lock manager) sẽ chỉ cấp phát trên A nếu

Ngày đăng: 17/10/2014, 07:23

HÌNH ẢNH LIÊN QUAN

Đồ thị chờ - bài giảng chương ii quản lý truy xuất đồng thời
th ị chờ (Trang 98)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm