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

Bài giảng Hệ quản trị cơ sở dữ liệu: Chương 4 - Lê Thị Minh Nguyện

13 6 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 13
Dung lượng 1,67 MB

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

Nội dung

Bài giảng Hệ quản trị cơ sở dữ liệu: Chương 4 trình bày về Quản lý giao tác. Nội dung cụ thể của chương này gồm có: Giới thiệu, định nghĩa giao tác, tính chất ACID của giao tác, trạng thái của giao tác, khai báo giao tác trong SQL Server,...

Trang 1

Chương 4.

Quản lý giao tác

GV: Lê Thị Minh Nguyện Email: nguyenltm@huflit.edu.vn

Nội dung

1 Giới thiệu

2 Định nghĩa giao tác

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

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

5 Khai báo giao tác trong SQL Server

6 Lịch biểu

1 Giới thiệu

• Ví dụ

•Hệ thống giao dịch ngân hàng

•Hệ thống đặt vé bay

• DBMS là môi trường đa người dùng

•Nhiều thao tác truy xuất lên cùng một đơn vị dữ liệu

•Nhiều thao tác thi hành đồng thời

Thời gian

Khách hàng 1 Khách hàng 2

Tìm thấy 1 chỗ trống

Tìm thấy 1 chỗ trống Đặt vé bay

Đặt vé bay

2 khách hàng đặt cùng 1 chỗ trống ???

Cơ chế tuần tự

1 Giới thiệu (tt)

• Các thao tác có thể làm cho trạng thái CSDL không chính xác

Đọc số dư của tài khoản A Kiểm tra (số dư > số tiền cần rút) Tăng số dư của tài khoản B Giảm số dư của tài khoản A

Tài khoản A Tài khoản B

Sự cố Ngân hàng chịu lỗ 1 khoảng tiền ???

Nguyên tố

Trang 2

2 Định nghĩa giao tác

• 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

2 Định nghĩa giao tác (tt)

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

3.1 Tính Nguyên tố ( A tomicity)

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

3.3 Tính Cô lập ( I solation)

3.4 Tính Bền vững ( D urability)

• Tính Nguyên tố ( A tomicity)

• Hoặc là toàn bộ hoạt động của giao dịch được phản ánh đúng đắn trong CSDL hoặc không có hoạt động nào cả

• Nói cách khác, tác dụng của các câu lệnh trong một giao tác phải như là một câu lệnh đơn Không chia nhỏ ra được

Trang 3

3.1 Tính Nguyên tố ( A tomicity) (tt)

• 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)

• A=50, B=250 (A+B=300) - CSDL nhất quán

• Nếu T không bao giờ bắt đầu thực hiện hoặc T được đảm bảo phải hoàn tất

thì trạng thái không nhất quán sẽ không xuất hiện

T:Read(A,t);

t:=t-50;

Write(A,t);

Read(B,t);

t:=t+50;

Write(B,t);

• 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.

• Consistency

• Tổng A+B là không đổi

• Nếu CSDL nhất quán trước khi T được thực hiện thì sau khi T

hoàn tất CSDL vẫn còn nhất quán

T: Read(A,t);

t:=t-50;

Write(A,t);

Read(B,t);

t:=t+50;

Write(B,t);

• Tính Cô lập ( I solation)

• Một giao tác không quan tâm đến các giao tác khác xử lý đồng thời với nó

• Khi có n giao tác xử lý đồng thời phải làm sao bảo đảm là tôi có tính độc lập của riêng tôi.

Trang 4

3.3 Tính Cô lập ( I solation)

• Giả sử có 1 giao tác T’ thực hiện phép toán A+B và chen vào giữa thời gian

thực hiện của T

• T’ kết thúc: A+B=50+200=250

• T kết thúc: A+B=50+250=300

• Hệ thống của các giao tác thực hiện đồng thời có trạng thái tương đương

với trạng thái hệ thống của các giao tác thực hiện tuần tự theo 1 thứ tự nào

đó

T:Read(A,t);

t:=t-50;

Write(A,t);

Read(B,t);

t:=t+50;

Write(B,t);

T’

• Tính Bền vững ( D urability)

• Mọi thay đổi mà giao tác thực hiện trên CSDL phải được ghi nhận bền vững

• Khi T kết thúc thành công

• Dữ liệu sẽ không thể nào bị mất bất chấp có sự cố hệ thống xảy ra

T:Read(A,t);

t:=t-50;

Write(A,t);

Read(B,t);

t:=t+50;

Write(B,t);

• Tính bền vững đảm bảo rằng một khi giao dịch được

hoà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.

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

Trang 5

5 Khai báo giao tác trong SQL Server

• Giao tác SQL được định nghĩa dựa trên các câu lệnh xử lý giao tác

sau :

• BEGIN TRANSACTION:Bắt đầu một giao tác

• SAVE TRANSACTION:Đánh dấu một vị trí trong giao tác (gọi là điểm đánh

dấu)

• ROLLBACK TRANSACTION: Quay luitrở lại đầu giao tác hoặc một điểm

đánh dấu trước đó trong giao tác

• COMMIT TRANSACTION:Đánh dấu điểm kết thúc một giao tác Khi câu

lệnh này thực thi cũng có nghĩa là giao tác đã thực hiện thành công

• ROLLBACK [WORK]:Quay luitrở lại đầu giao tác

• COMMIT [WORK]:Đánh dấu kết thúc giao tác

5 Khai báo giao tác trong SQL Server (tt)

•Cú Pháp:

BEGIN TRANSACTION SQL Statements COMMIT | ROLLBACK TRANSACTION

UPDATE monhoc SET sodvht=4 WHERE sodvht=3 UPDATE diemthi SET diemlan2=0 WHERE diemlan2 IS NULL

UPDATE monhoc SET sodvht=4 WHERE sodvht=3 UPDATE diemthi SET diemlan2=0 WHERE diemlan2 IS NULL

Trang 6

5 Khai báo giao tác trong SQL Server (tt)

6 Lịch biểu

6.1 Giới thiệu 6.2 Khái niệm 6.3 Lịch thao tác (Schedule) 6.4 Lịch tuần tự

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

6.1 Giới thiệu

• Thực hiện tuần tự

•Tại một thời điểm, một giao tác chỉ có thể bắt đầu khi giao tác trước nó hoàn tất

• Thực hiện đồng thời

•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

•Tận dụng tài nguyên và thông lượng (throughput)

•Trong khi 1 giao tác đang thực hiện đọc/ghi trên đĩa, 1 giao tác khác đang xử lý tính toán

trên CPU

•Giảm thời gian chờ

•Các giao tác ngắn phải chờ đợi các giao tác dài

•Chia sẻ chu kỳ CPU và truy cập đĩa để làm giảm sự trì hoãn trong khi các giao tác thực thi

6.2 Khái niệm

• Khi thực hiện các giao dịch đồng thời có thể gây ra tình trạng khóa sống (live lock), khóa gài và vấn đề bất khả tuần tự Để loại bỏ vấn đề này, có 2 công cụ:

• Bộ xếp lịch (schedule)

• Nghi thức (protocol)

Trang 7

6.2 Khái niệm (tt)

• Bộ xếp lịch (schedule) là thành phần của hệ thống CSDL, có vai trò

làm trọng tài phân xử các yêu cầu đang có xung đột Người thiết

kế hệ thống đã biết cách loại bỏ khóa sống của một bộ xếp lịch

FIFO Một bộ xếp lịch có thể xử lý các khóa gài và tính bất khả

tuần tự bằng cách:

• Buộc 1 giao dịch phải đợi, chẳng hạn cho đến khi khóa đang được yêu cầu được

giải phóng

• Buộc một giao dịch ngừng lại và tái khởi động

6.2 Khái niệm (tt)

Bộ xếp lịch

6.2 Khái niệm (tt)

Nghi thức (protocal): là những quy định mà các giao dịch

phải tuân theo Chẳng hạn, chiến lược tránh khoá gài bằng

cách yêu cầu khoá chốt trên các mục dữ liệu theo một thứ tự

cố định nào đó chính là một nghi thức.

6.3 Lịch thao tác (Schedule)

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

• Gồm có

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

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

Trang 8

6.3 Lịch thao tác (Schedule)(tt)

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)

• Giả sử ràng buộc nhất quán trên CSDL là A=B

• Từng giao tác thực hiện riêng lẽ thì tính nhất quán sẽ

được bảo toàn

6.4 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

T1

T2

Tn

… Thời gian

S

T3

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

T 2

T 1

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)

25 25

125

125

250

250

S 1

T 2

T 1

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)

25 25

50

50

150

150

S 2

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

Ví dụ: xét hệ thống ngân hang có một số tài khoản và một tập các giao dịch có thểt ruy xuất hay cập nhật các tài khoản này Đặt T1 và T2 là 2 giao dịch chuyển tiền từ một tài khoản này đến một tài khoản khác Giao dịch T1 chuyển 50USD từ tài khoản A đến tài khoản B và được định nghĩa như sau:

Trang 9

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

Giao dịch T2 chuyển 10% số dư từ tài khoản A đến tài khoản B được định

nghĩa như sau:

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

Giả sử các giao dịch hiện thời của các tài khoản A và B tương ứng là 1.000USD và 2.000USD Giả sử 2 giao dịch được thực hiện tuần tự theo thứ tự T1 rồi đến T2

Một lịch S được lập từ n giao tác T1, T2, …, Tn 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

T n

T 1

T 2

T 3

Thời gian

S

Trang 10

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

• Trước S3 khi thực hiện

• A=B=c

• với c là hằng số

• Sau khi S3kết thúc

• A=2*(c+100)

• B=2*(c+100)

• Trạng thái CSDL nhất quán

• S3là khả tuần tự

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)

125

125

250

250

S 3

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

• Trước S4khi thực hiện

• A=B=c

• với c là hằng số

• Sau khi S4kết thúc

• A = 2*(c+100)

• B = 2*c + 100

• Trạng thái CSDL không nhất quán

• S4không khả tuần tự

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)

125

50

250

150

S 4

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

• Khi S5kết thúc

• A và B bằng nhau

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

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

• T1, T2

• T2, T1

T2

T1

Read(A,s)

s:=s*1

t:=t+100

Read(A,t)

t:=t+100

Write(A,t)

Read(B,t)

Write(B,t)

s:=s*1

Write(A,s)

Read(B,s)

Write(B,s)

25 25

125

25

125

125

S 5

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

• Lịch nào khả tuần tự

Trang 11

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

• Bài tập

• Cho A=10; B=20; N=30; M=40

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

• Lịch nào là khả tuần tự? Nếu khả tuần tự thì tương đương với lịch tuần tự nào?

6.6 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 tác 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 (Precedence graph)

6.6 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ó Tjphá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ị Tjphá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 Tjphá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 12

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

T 2

T 1

Read(A) Read(B)

Write(A) Write(B)

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

• T2ST3

 T1ST2

 P(S) không có chu trình

 S serializable theothứ tự

T1, T2, T3

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

T2 T1 Read(A) Read(B) Write(A) Write(B)

S T3

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

Write(B)

Lịch có khả tuần tự không?

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

T 2

T 1

Read(A) Read(B)

Write(A)

Write(B)

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

Write(B)

 P(S) có chu trình

• T2ST3

 T2ST1

 T1ST2

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

T 2

T 1

Read(A)

Write(A)

Read(A) Write(A)

T 3

• Vẽ P(S)

• S có conflict-serializable không?

Bài tập 1

Trang 13

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

T 2

T 1

Read(A)

Write(A)

Read(A) Write(A)

T 3

• Vẽ P(S)

• S có serializable không?

Bài tập 2

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

• Vẽ P(S)

• S có serializable không?

T 2

T 1

Read(A) Read(C) Write(A)

Write(C)

Read(A) Write(A)

Write(D) Write(B)

T 3

Bài tập 3

Ngày đăng: 11/05/2021, 01:29

TỪ KHÓA LIÊN QUAN

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