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

Chuong7 transaction

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.98 MB, 57 trang )

Giao Tác

1


Nội dung

www.themegallery.com

1

Giới thiệu

2

Giao tác

3

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

2


Giới thiệu
Ví dụ 1:
TaiKhoan (MaTK, HoTen, SoDu)
— Xét store procedure spRutTien
◦ Bước 1: Đọc số dư tài khoản
◦ Bước 2: Kiểm tra số dư tài khoản
◦ Bước 3: Nếu đủ tiền


◦ Bước 3.1: Cập nhật tài khoản với số dư mới
◦ Bước 3.2: Trả tiền ra máy ATM
◦ Bước 4: Nếu khơng đủ tiền thì kết thúc

www.themegallery.com

3


Giới thiệu
Ví dụ 1:
— Nhận xét
◦ Nếu bước 3.1 thực hiện được và 3.2 bị lỗi
è cập nhật mà không trả tiền
◦ Nếu bước 3.2 thực hiện được mà 3.1 bị lỗi
è trả tiền mà không cập nhật tài khoản
Ø Dữ liệu bị sai
— Mong muốn
◦ Bước 3.1 và 3.2 phải được thực hiện hết hoặc
không thực hiện được bước nào.
www.themegallery.com

4


Giới thiệu
Ví dụ 2:
— Xét store procedure spChuyenTien
◦ Tham số @tk1, @tk2, @sotien
◦ Bước 1: Đọc số dư của @tk1 è @sodu1

◦ Bước 2: Cập nhật số dư của tài khoản 1
UPDATE TaiKhoan
SET SoDu = @sodu1 - @sotien
◦ Bước 3: Đọc số dư của tài khoản 2
UPDATE TaiKhoan
SET SoDu = @sodu2 + @sotien
◦ Bước 4: Thông báo thành công
www.themegallery.com

5


Giới thiệu
Ví dụ 2:
— Nhận xét
◦ Nếu bước 2 thành công, bước 3 bị lỗi è SoDu
của tài khỏan @tk1 bị trừ nhưng SoDu của
@tk2 không được tăng lên.
Ø Bị lỗi

— Mong muốn

◦ Bước 2 và bước 3 phải được thực hiện hết
hoặc khơng có bước nào được thực hiện.
www.themegallery.com

6


Giới thiệu

Ví dụ 3:
DocGia(MaDG, HoTen, NgaySinh)
NgLon(MaDG, SoNha, Dng, Phng, Quan)
• Xét store procedure: spThemDGNguoiLon
◦ Bước 1: Xác định mã đọc giả
◦ Bước 2: Insert vào bảng DocGia
◦ Bước 3: Kiểm tra tuổi của đọc giả
◦ Bước 4: Nếu không đủ tuổi thì thơng báo lỗi
và kết thúc
◦ Bước 5: Ngược lại thì Insert vào bảng NgLon
www.themegallery.com

7


Giới thiệu
Ví dụ 3:
— Nhận xét:
◦ Giả sử gọi spThemNguoiLon để thêm một đọc
giả mà nhỏ hơn 18 tuổi
Giải quyết
à Có 1 bộ thêm vào bảng DocGia
???
à Có 0 bộ thêm vào bảng NgLon
Ø Dữ liệu bị saiKhai báo các bước muốn có đặc
— Mong muốn: điểm như trên vào trong 1 giao tác
◦ Bước 2 và bước 5 phải được thực hiện hết,
hoặc không thực hiện bước nào hết.

www.themegallery.com


8


Nội dung

www.themegallery.com

1

Giới thiệu

2

Giao tác

3

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

9


Giao tác
• Giao tác là một tập các lệnh có truy xuất đến
CSDL
• Giao tác phải đảm bảo tính ACID
Giao tác

www.themegallery.com


10


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
11


Khai báo giao tác
• Một số từ khóa:
◦ Begin tran: Bắt đầu giao tác
◦ Commit : Kết thúc giao tác (thành công)
q Dữ liệu sẽ được xác nhận trên CSDL
◦ Rollback: Kết thúc giao tác (thất bại)
q Dữ liệu sẽ được khơi phục về trạng thái
ban đầu
• Khi nào thì rollback ?
◦ Khi có một lệnh nào đó trong giao tác bị lỗi và
cần phải khôi phục lại dữ liệu.

www.themegallery.com

12


Xác định lỗi
• Lỗi do hệ thống: Lỗi do những câu lệnh
INSERT, UPDATE, DELETE
◦ Dựa vào biến @@error
[0: thành công, != 0: mã lỗi]
IF @@error != 0
BEGIN

-- Các câu lệnh xử lý khi bị lỗi
END
◦ Lưu ý: Sau mỗi câu lệnh Select, Insert,
Update, Delete thì biến @@error chứa trạng
thái (thành công/ thất bại) của việc thực thi
câu lệnh.
www.themegallery.com

13


Xác định lỗi
• Lỗi do người dùng:
◦ Đọc giả thêm vào nhỏ hơn 18 tuổi
◦ Xác định lỗi dựa vào đoạn code do người dùng
viết.
◦ Ví dụ:
IF @tuoi < 18
BEGIN
-- Các câu lệnh xử lý khi bị lỗi
END
www.themegallery.com

14


Cú pháp khai báo
— Bước 1: Bổ sung từ khóa khai báo bắt đầu
(begin tran), kết thúc giao tác (commit).
— Bước 2: Sau mỗi câu lệnh Select, Insert,

Update, Delete è Kiểm tra lỗi hệ thống è Nếu
có lỗi thì có những xử lý phù hợp.
IF @@error != 0
BEGIN
raiserror (‘Lỗi rồi !!!’, 16, 1)
rollback –- một cách hợp lý
END

www.themegallery.com

15


Cú pháp khai báo
• Bước 3: Sau mỗi lần kiểm tra lỗi của người
dùng è Nếu có lỗi thì có những xử lý phù hợp.
IF [điều kiện gây ra lỗi thỏa mãn]
BEGIN
raiserror ('Lỗi rồi !!!' 16, 1)
rollback –- một cách hợp lý
END

www.themegallery.com

16


CSDL Quản lý thư viện










DocGia (ma_DocGia, ho, tenlot, ten, ngaysinh)
Nguoilon (ma_DocGia, sonha, duong, quan, dienthoai, han_sd)
TreEm (ma_DocGia, ma_DocGia_nguoilon)
Tuasach (ma_tuasach, tuasach, tacgia, tomtat)
Dausach (isbn, ma_tuasach, ngonngu, bia, trangthai)
Cuonsach (isbn, ma_cuonsach, tinhtrang)
DangKy (isbn, ma_DocGia, ngay_dk, ghichu)
Muon (isbn, ma_cuonsach, ma_DocGia, ngay_muon,
ngay_hethan)
• QuaTrinhMuon(isbn, ma_cuonsach, ngay_muon, ma_DocGia,
ngay_hethan, ngay_tra, tien_muon, tien_datra, tien_datcoc,
ghichu)
www.themegallery.com

17


CSDL Quản lý thư viện

www.themegallery.com

18



Nội dung

www.themegallery.com

1

Giới thiệu

2

Giao tác

3

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

19


Bối cảnh

Website bàn hàng

www.themegallery.com

20


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

21


Bối cảnh
vMơ 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
vGiao 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

22


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

T2
Begin tran
write (A)
Commit tran


n+1 Commit tran
www.themegallery.com

23


Giao tác lồng nhau
v Tham số @@trancount cho biết số transaction đang
thực thi.
v Khi khai báo transaction tường minh, phải rollback
hoặc commit tường minh để:
§ Giải phóng tài ngun 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

24


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
25


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

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