Tải bản đầy đủ (.pdf) (53 trang)

Slide seminar lần 1 file

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.51 MB, 53 trang )

Chương 7

Giao Tác


Nội dung

www.themegallery.com

1

Giới thiệu

2

Giao tác

3

Điều khiển đồng thời


Giới thiệu
Đặt hàng

Website bàn hàng

ĐH ko có
chi tiết

Giải quyết


???

Chi tiết_2 ĐH
Chi tiết_1 ĐH

CSDL sai
www.themegallery.com

Đơn Hàng

Cập nhật SL


Nội dung

www.themegallery.com

1

Giới thiệu

2

Giao tác

3

Điều khiển đồng thời



Định nghĩa
Giao tác
Đơn Hàng
Chi tiết_2 ĐH
Chi tiết_1 ĐH
Cập nhật SL

www.themegallery.com

 Giao tác là chuỗi các hành
động tương tác trên CSDL
 Giao tác phải đảm bảo tính
chất ACID


Tính ACID
Mọi thao tác phải
được thực hiện,
hoặc đều bị hủy

Atomicity
(nguyên tố)

Durability
(bền vững)
Khi giao tác thực hiện
thành cơng thì mọi thay
đổi của nó phải được lưu
bền vững trong CSDL
www.themegallery.com


Tất cả dữ liệu phải ở
trạng thái nhất quán sau
khi giao tác kết thúc

Consistency
(nhất quán)

Isolation
(cô lập)
Một giao tác thực hiện
đồng thời với giao tác
khác thì khơng bị ảnh
hưởng bởi giao tác khác


Khai báo giao tác
Giao tác
Đơn Hàng
Chi tiết_2 ĐH
Chi tiết_1 ĐH
Cập nhật SL

Begin Tran Bắt đầu giao tác
INSERT  Đơn hàng

INSERT  Chi tiết đơn hàng 1
INSERT  Chi tiết đơn hàng 2
Update  Cập nhật số sản phẩm


End Tran Kết thúc giao tác

www.themegallery.com


Database
trước giao tác

SELECT

SELECT

INSERT
UPDATE
DELETE
Database sau
giao tác

www.themegallery.com

INSERT
UPDATE
Lỗi phần
mềm

Database
trước giao tác
ROLLBACK

Database

trước giao tác
ROLLBACK

GIAO TÁC

Tình huống giao tác

SELECT

INSERT
Lỗi phần
cứng


Ví dụ
Database trước giao tác

Begin Tran Bắt đầu giao tác
INSERT  Đơn hàng
INSERT  Chi tiết đơn hàng 1

INSERT  Chi tiết đơn hàng 2
Update  Cập nhật số sản phẩm

End Tran Kết thúc giao tác
Database trước giao tác
www.themegallery.com


Cú pháp

Create proc TenProc
As
Begin
Bắt đầu giao tác
Begin tran
Kết thúc giao tác  hủy
/*giao tác bị lỗi*/
giao tác, đưa CSDL về
trạng thái ban đầu
rollback tran
/*giao tác thành công*/
Kết thúc giao tác thành
commit tran
công giao tác được lưu
bền vững xuống CSDL
End
www.themegallery.com


Ví dụ
Create proc DatHang
As
Begin
Begin tran
Insert into DonHang
Insert into CT_DonHang
Update SanPham
commit tran
End
www.themegallery.com



Trạng thái CSDL
trước giao tác

Giao tác:
Bắt đầu bởi
Begin Tran
Kết thúc bởi
Commit tran

Trạng thái CSDL tại
điểm đánh dấu a
Trạng thái CSDL tại
điểm đánh dấu b

Khi rollback chỉ quay
lại tới vị trí đánh dấu.
Các câu lệnh sau đó
vẫn thực hiện
Trạng thái CSDL
sau giao tác

www.themegallery.com


Ví dụ 1
BEGIN TRANSACTION giaotac3
UPDATE diemthi
SET diemlan2=0

WHERE diemlan2 IS NULL
SAVE TRANSACTION a
UPDATE monhoc
SET sodvht=4
WHERE sodvht=3

Không được thực hiện

ROLLBACK TRANSACTION a
UPDATE monhoc
SET sodvht=2
WHERE sodvht=3
COMMIT TRANSACTION giaotac3
www.themegallery.com


Ví dụ 2
BEGIN TRANSACTION giaotac4
UPDATE diemthi
SET diemlan2=0
WHERE diemlan2 IS NULL
SAVE TRANSACTION a
UPDATE monhoc
SET sodvht=4
WHERE sodvht=3
ROLLBACK TRANSACTION giaotac4
UPDATE monhoc
SET sodvht=2
WHERE sodvht=3


COMMIT TRANSACTION giaotac4
www.themegallery.com

Toàn bộ giao
tác bị hủy


Nội dung

www.themegallery.com

1

Giới thiệu

2

Giao tác

3

Điều khiển đồng thời


Bối cảnh

Website bàn hàng

www.themegallery.com



Bối cảnh
Database trước giao tác
Đọc DS SP

Đọc DS SP

Thêm SP vào giỏ

Thêm SP vào giỏ

Thêm PMH

Thêm PMH

Thêm CT PMH

Thêm CT PMH

Cập nhật số SP

Cập nhật số SP

Database sau giao tác
www.themegallery.com


Bối cảnh
Mơ hình ứng dụng đa người dùng
Một CSDL lưu tại Server và nhiều clients đồng

thời truy cập và thao tác trên cùng CSDL
Giao tác Ti của client X đang thao tác trên
CSDL, trong khi đó một giao tác Tj của client
Y cũng đang thực hiện truy xuất và thay đổi
CSDL.
Các Ti và Tj có thể xung đột, tranh chấp lẫn
nhau.
www.themegallery.com


Giao tác lồng nhau
STT
T1
1 Begin tran
2
3
read (A)
4
5
….
n
read (A)
n+1 Commit tran
www.themegallery.com

T2
Begin tran
write (A)
Commit tran



Giao tác lồng nhau
 Tham số @@trancount cho biết số transaction đang
thực thi.
 Khi khai báo transaction tường minh, phải rollback
hoặc commit tường minh để:
 Giải phóng tài nguyên transaction đang chiếm giữ.
Tránh cản trở việc thực hiện của các transaction
khác.

www.themegallery.com


Vấn đề truy xuất đồng thời
Dirty read
Unrepeatable read
Phantom
Lost update
www.themegallery.com

Đọc dữ liệu rác
Khơng thể đọc lại dữ liệu
Bóng ma
Mất dữ liệu đã cập nhật


Dirty read
STT

T1


1
2

Begin tran

3

write (A)
//Insert | Update

Begin tran

4

5
6
7
8

T2

read (A)

If (Lỗi)
Rollback tran
Commit tran
Commit tran

 T2 đọc dữ liệu (rác) đã bị T1 hủy.

www.themegallery.com


Unrepeatable read
STT
1
2

T1

T2

Begin tran
Begin tran

3
4

Read(A)

5
6
7

Read(A)

Write(A)
//Update | Delete
Commit tran
Commit tran


 T1 đọc dữ liệu giá trị A khác nhau ở 2 lần
đọc.
www.themegallery.com


Phantom
STT
1
2

T1

T2

Begin tran
Begin tran

3
4

Read(A)

5
6
7

Read(A, B)

write(B)

//Insert | Update
Commit tran
Commit tran

 T1 đọc tập dữ liệu 2 lần khác nhau
www.themegallery.com


Lost update
STT
1
2

3
4
5
6
7
8

T1

T2

Begin tran
Begin tran

Read(A)
Read(A)
Write(A’)


Write(A’’)
Commit tran
Commit tran

 Dữ liệu được ghi bởi T2 đã bị ghi đè bởi T1
www.themegallery.com


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×