Bài giảng Cơ sở dữ liệu - Chương 4: Quản lý giao tác - Lê Thị Minh Nguyện

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

pdf 13 trang yennguyen 2280
Bạn đang xem tài liệu "Bài giảng Cơ sở dữ liệu - Chương 4: Quản lý giao tác - Lê Thị Minh Nguyện", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Cơ sở dữ liệu - Chương 4: Quản lý giao tác - Lê Thị Minh Nguyện

Bài giảng Cơ sở dữ liệu - Chương 4: Quản lý giao tác - Lê Thị Minh Nguyện
8/25/2017
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
Hệ quản trị Cơ sở dữ liệu 2
1. Giới thiệu
Hệ quản trị Cơ sở dữ liệu 3
• 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)
Hệ quản trị Cơ sở dữ liệu 4
• Khi DBMS gặp sự cố
• 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ố
8/25/2017
2
2. Định nghĩa giao tác
Hệ quản trị Cơ sở dữ liệu 5
• 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 CSDL nhất quán 2Giao tác
2. Định nghĩa giao tác (tt)
Hệ quản trị Cơ sở dữ liệu 6
3. Tính chất ACID của giao tác
Hệ quản trị Cơ sở dữ liệu 7
3.1. Tính Nguyên tố (Atomicity)
3.2. Tính Nhất quán (Consistency)
3.3. Tính Cô lập (Isolation)
3.4. Tính Bền vững (Durability)
3.1. Tính Nguyên tố (Atomicity)
Hệ quản trị Cơ sở dữ liệu 8
• Tính Nguyên tố (Atomicity)
• 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.
8/25/2017
3
3.1. Tính Nguyên tố (Atomicity) (tt)
Hệ quản trị Cơ sở dữ liệu 9
• 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);
3.2. Tính Nhất quán (Consistency)
Hệ quản trị Cơ sở dữ liệu 10
• Tính Nhất quán (Consistency)
• 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.
3.2. Tính Nhất quán (Consistency)
Hệ quản trị Cơ sở dữ liệu 11
• 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);
3.3. Tính Cô lập (Isolation)
Hệ quản trị Cơ sở dữ liệu 12
• Tính Cô lập (Isolation)
• 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.
8/25/2017
4
3.3. Tính Cô lập (Isolation)
Hệ quản trị Cơ sở dữ liệu 13
• 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’
3.4. Tính Bền vững (Durability)
Hệ quản trị Cơ sở dữ liệu 14
• Tính Bền vững (Durability)
• 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);
3.4. Tính Bền vững (Durability) (tt)
• 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.
Hệ quản trị Cơ sở dữ liệu 15
4. Trạng thái của giao tác
Hệ quản trị Cơ sở dữ liệu 16
8/25/2017
5
5. Khai báo giao tác trong SQL Server
Hệ quản trị Cơ sở dữ liệu 17
• 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 lui trở 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 lui trở 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)
Hệ quản trị Cơ sở dữ liệu 18
• Cú Pháp: 
BEGIN TRANSACTION 
SQL Statements 
COMMIT | ROLLBACK TRANSACTION
BEGIN TRANSACTION giaotac1 
UPDATE monhoc SET sodvht=4 WHERE sodvht=3 
UPDATE diemthi SET diemlan2=0 WHERE diemlan2 IS 
NULL 
ROLLBACK TRANSACTION giaotac1 
BEGIN TRANSACTION giaotac2 
UPDATE monhoc SET sodvht=4 WHERE sodvht=3 
UPDATE diemthi SET diemlan2=0 WHERE diemlan2 IS NULL 
COMMIT TRANSACTION giaotac2 
5. Khai báo giao tác trong SQL Server (tt)
Hệ quản trị Cơ sở dữ liệu 19
5. Khai báo giao tác trong SQL Server (tt)
Hệ quản trị Cơ sở dữ liệu 20
8/25/2017
6
5. Khai báo giao tác trong SQL Server (tt)
Hệ quản trị Cơ sở dữ liệu 21
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
Hệ quản trị Cơ sở dữ liệu 22
6.1. Giới thiệu
Hệ quản trị Cơ sở dữ liệu 23
• 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)
Hệ quản trị Cơ sở dữ liệu 24
8/25/2017
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
Hệ quản trị Cơ sở dữ liệu 25
6.2. Khái niệm (tt)
Hệ quản trị Cơ sở dữ liệu 26
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.
Hệ quản trị Cơ sở dữ liệu 27
6.3. Lịch thao tác (Schedule)
Hệ quản trị Cơ sở dữ liệu 28
• 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)
8/25/2017
8
6.3. Lịch thao tác (Schedule)(tt)
Hệ quản trị Cơ sở dữ liệu 29
T2T1
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)
Hệ quản trị Cơ sở dữ liệu 30
• 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
Ti (i=1..n) được thực hiện liên tiếp nhau
T1
T2
Tn
Thời gian
S
T3
6.4. Lịch tuần tự (Serial schedule) (tt)
Hệ quản trị Cơ sở dữ liệu 31
T2T1
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)
A B
25 25
125
125
250
250
S1
T2T1
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)
A B
25 25
50
50
150
150
S2
6.4. Lịch tuần tự (Serial schedule) (tt)
Hệ quản trị Cơ sở dữ liệu 32
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:
8/25/2017
9
6.4. Lịch tuần tự (Serial schedule) (tt)
Hệ quản trị Cơ sở dữ liệu 33
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)
Hệ quản trị Cơ sở dữ liệu 34
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
6.4. Lịch tuần tự (Serial schedule) (tt)
Hệ quản trị Cơ sở dữ liệu 35
6.5. Lịch khả tuần tự
Hệ quản trị Cơ sở dữ liệu 36
• 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
Tn
T1
T2
T3
Thời gian
S
8/25/2017
10
6.5. Lịch khả tuần tự (tt)
Hệ quản trị Cơ sở dữ liệu 37
• Trước S3 khi thực hiện
• A=B=c
• với c là hằng số
• Sau khi S3 kết thúc
• A=2*(c+100)
• B=2*(c+100)
• Trạng thái CSDL nhất
quán
• S3 là khả tuần tự
T2T1
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)
A B
25 25
125
125
250
250
S3
6.5. Lịch khả tuần tự (tt)
Hệ quản trị Cơ sở dữ liệu 38
• Trước S4 khi thực hiện
• A=B=c
• với c là hằng số
• Sau khi S4 kết thúc
• A = 2*(c+100)
• B = 2*c + 100
• Trạng thái CSDL không
nhất quán
• S4 không khả tuần tự
T2T1
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)
A B
25 25
125
50
250
150
S4
6.5. Lịch khả tuần tự (tt)
Hệ quản trị Cơ sở dữ liệu 39
• 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 tự
• T1, T2
• T2, T1
T2T1
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)
A B
25 25
125
25
125
125
S5
6.5. Lịch khả tuần tự (tt)
Hệ quản trị Cơ sở dữ liệu 40
• Lịch nào khả tuần tự
8/25/2017
11
6.5. Lịch khả tuần tự (tt)
Hệ quản trị Cơ sở dữ liệu 41
• Bài tập
• Cho A=10; B=20; N=30; M=40
6.5. Lịch khả tuần tự (tt)
Hệ quản trị Cơ sở dữ liệu 42
• 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
Hệ quản trị Cơ sở dữ liệu
• 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)
43
6.6. Kiểm tra tính khả tuần tự của một lịch(tt)
Hệ quản trị Cơ sở dữ liệu 44
• 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ự
8/25/2017
12
6.6. Kiểm tra tính khả tuần tự của một lịch(tt)
Hệ quản trị Cơ sở dữ liệu 45
T2T1
Read(A)
Read(B)
Write(A)
Write(B)
S
T3
Read(A)
Write(A)
Read(B)
Write(B)
• T2 S T3
2 3
 T1 S T2
1 2
1 2 3
 P(S) không có chu trình
 S serializable theo thứ tự
T1, T2, T3
6.6. Kiểm tra tính khả tuần tự của một lịch(tt)
Hệ quản trị Cơ sở dữ liệu 46
T2T1
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)
Hệ quản trị Cơ sở dữ liệu 47
T2T1
Read(A)
Read(B)
Write(A)
Write(B)
S
T3
Read(A)
Write(A)
Read(B)
Write(B)
 P(S) có chu trình
• T2 S T3
2 3
 T2 S T1
2 1
 T1 S T2
1 2
1 2 3
6.6. Kiểm tra tính khả tuần tự của một lịch(tt)
Hệ quản trị Cơ sở dữ liệu 48
T2T1
Read(A)
Write(A)
S
T4
Read(A)
Write(A)
T3
• Vẽ P(S)
• S có conflict-serializable không?
Bài tập 1
8/25/2017
13
6.6. Kiểm tra tính khả tuần tự của một lịch(tt)
Hệ quản trị Cơ sở dữ liệu 49
T2T1
Read(A)
Write(A)
S
T4
Read(A)
Write(A)
T3
• 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)
Hệ quản trị Cơ sở dữ liệu 50
• Vẽ P(S)
• S có serializable không?
T2T1
Read(A)
Read(C)
Write(A)
Write(C)
S
T4
Read(A)
Write(A)
Write(D)
Write(B)
T3
Bài tập 3
Hệ quản trị Cơ sở dữ liệu 51

File đính kèm:

  • pdfgiao_trinh_co_so_du_lieu_chuong_4_quan_ly_giao_tac_le_thi_mi.pdf