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

Bài giảng cơ sở dữ liệu chương 7 ths lương thị ngọc khánh

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 (303.34 KB, 26 trang )

CHƯƠNG 7:
CHUYểN TÁC VÀ KHÓA
(TRANSACTIONS AND
LOCKS)
1

ThS. Lương Thị Ngọc Khánh
Khoa CNTT – ĐH Tôn Đức Thắng


KHÁI NIệM Về CHUYểN TÁC



Gồm nhiều bước
Các bước được thi hành lần lượt
Cả công việc sẽ thất bại nếu một trong các bước
thực hiện bị thất bại

ThS. Lương Thị Ngọc Khánh – K. CNTT



tác dùng để chỉ một công việc

10/31/12

 chuyển

2



KHÁI NIệM Về CHUYểN TÁC (TT)






Atomic: Tất cả các bước được gói trong chuyển
tác như một hành động duy nhất
Consistency: Dữ liệu được đảm bảo toàn vẹn cho
dù transaction có thành công hay không
Isolation: Khi hai transaction thực hiện đồng
thời, chúng được giữ độc lập để các kết quả
không ảnh hưởng lẫn nhau
Durability: Sau khi transaction thực hiện thành
công, dữ liệu được đảm bảo kể cả khi hệ thống
bị sự cố

ThS. Lương Thị Ngọc Khánh – K. CNTT



ACID

10/31/12

 Tính

3



CHUYểN TÁC KHÔNG TƯờNG MINH
Server chia các câu lệnh thực hiện làm
hai loại


chuyển tác tường minh
chuyển tác không tường minh

ThS. Lương Thị Ngọc Khánh – K. CNTT



10/31/12

 SQL

 Mặc

định, SQL Server thực hiện các lệnh ở
chế độ chuyển tác không tường minh



Mỗi câu lệnh coi như một transaction: INSERT,
UPDATE, DELETE,…
Sau khi thực hiện lệnh, các thay đổi dữ liệu sẽ
được cập nhật ngay vào CSDL
4



CHUYểN TÁC TƯờNG MINH
tác tường minh là chuyển tác phải khai
báo trước

10/31/12

 chuyển

Sử dụng từ khoá Begin Tran
 Các lệnh theo sau thuộc vào chuyển tác đã khai báo
 Tác dụng thay đổi dữ liệu được cập nhật ngay vào
CSDL nhưng

ThS. Lương Thị Ngọc Khánh – K. CNTT



Các chuyển tác khác không thấy được thay đổi này
 Sẽ bị hủy bỏ khi phiên làm việc giữa client – server chấm
dứt


 Kết


Quá trình thực hiện lệnh, nếu bị lỗi có thể hủy bỏ
chuyển tác bằng lệnh Rollback Tran





thúc chuyển tác

Toàn bộ dữ liệu thay đổi đều bị hủy bỏ

Khi các lệnh đã hoàn tất, kết thúc chuyển tác bằng
Commit Tran


Dữ liệu thay đổi được lưu lại

5


CHUYểN TÁC BEGIN TRAN
chuyển tác đơn giản nhất của quá trình
xử lý chuyển tác, chỉ ra rằng đây là điểm
bắt đầu của một khối chuyển tác.
 Cú pháp:


ThS. Lương Thị Ngọc Khánh – K. CNTT



10/31/12

 Là


Begin tran[saction]
[ten_giaodich | <@bien_giaodich>]

6


CHUYểN TÁC COMMIT TRAN
xác định kết thúc hay hoàn thành
chuyển tác. Tại thời điểm commit được gọi,
chuyển tác được xem như là đã thực hiện
thành công.
 Cú pháp:


ThS. Lương Thị Ngọc Khánh – K. CNTT



10/31/12

 Commit

Commit tran[saction]
[ten_giaodich | <@bien_giaodich>]

7


dụ:


10/31/12

 Ví

Begin tran

ThS. Lương Thị Ngọc Khánh – K. CNTT

Update bang1 set cot1 = ‘AB’ where cot2 = ‘BB’
Insert bang2 values(‘gtri1’,’gtri2’)
Select * from bang2

Commit tran

8


CHUYểN TÁC ROLLBACK TRAN
gặp chuyển tác này tất cả những phát
biểu được thực hiện từ khi gặp chuyển tác
Begin sẽ bị hủy bỏ. Ngoại trừ chúng ta định
nghĩa thêm điểm dừng cho thao tác
Rollback.
 Cú pháp:

10/31/12

 Khi


ThS. Lương Thị Ngọc Khánh – K. CNTT

Rollback tran[saction]
[<@transaction
variable>
|
<@savepoint
variable>]
9


dụ:

10/31/12

 Ví

Begin tran

ThS. Lương Thị Ngọc Khánh – K. CNTT

Delete bang1 where cot1 = ‘AB’
If @@error > 0
rollback tran
Else
commit tran

10



CHUYểN TÁC SAVE TRAN
lưu lại vị trí của một chuyển tác, có thể
dùng kỹ thuật đánh dấu
 Có thể đặt tên cho vị trí đánh dấu dùng để
tham chiếu khi Rollback. Một chuyển tác có
thể có nhiều vị trí đánh dấu.
 Cú pháp:


ThS. Lương Thị Ngọc Khánh – K. CNTT



10/31/12

 Để

SAVE TRAN[SACTION]
[<save point name>|<@savepoint variable>

11


VÍ Dụ

12

ThS. Lương Thị Ngọc Khánh – K. CNTT


Kết quả trả về
Tổng vật tư trước khi thêm
11
Tổng vật tư sau khi thêm trong chuyển tác
12
Tổng vật tư hiện tại
11

10/31/12

SET ANSI_WARNINGS OFF
GO
SELECT COUNT(*) AS 'Tổng vật tư trước khi thêm' FROM VATTU
BEGIN TRAN
INSERT INTO VATTU (Mavtu, Tenvtu, Dvtinh, Phantram) VALUES
('BU01', 'Bàn ủi PhiLip', 'Cái', 17)
SELECT COUNT(*) AS 'Tổng vật tư sau khi thêm trong chuyển
tác' FROM VATTU
ROLLBACK TRAN
SELECT COUNT(*) AS 'Tổng vật tư hiện tại' FROM VATTU
SET ANSI_WARNINGS ON


VÍ Dụ TRANSACTION

10/31/12

ThS. Lương Thị Ngọc Khánh – K. CNTT

13



KHÓA (LOCK)
(Lock) được sinh ra để giới hạn quyền
truy nhập trên môi trường đa người dùng
 Microsoft SQL Server sử dụng lock để đảm
bảo tính toàn vẹn của transaction và tính
thống nhất của database
 Nếu lock không được sử dụng, dữ liệu bên
trong CSDL có thể bị sai về logíc, và các
query chạy trên đó sẽ đưa ra các kết quả
không mong đợi
 Bản chất của lock là việc một người muốn
truy nhập riêng vào một bảng, vì vậy server
sẽ lock bảng đó lại cho riêng người đó

10/31/12

 Khóa

ThS. Lương Thị Ngọc Khánh – K. CNTT

14


CÁC VấN Đề CÓ THể NGĂN NGừA BằNG
LOCK







Dirty reads (đọc dữ liệu sai)
Unrepeatable reads (đọc hai lần bản ghi)
Phantoms (đọc các bản ghi nháp, không có)
Lost updates (cập nhật, mất dữ liệu)

ThS. Lương Thị Ngọc Khánh – K. CNTT



có thể giải quyết 4 vấn đề sau:

10/31/12

 Lock

15


ĐọC Dữ LIệU SAI (DIRTY READS)
dữ liệu sai xảy ra khi chuyển tác đọc
một bản ghi mà một phần chuyển tác khác
chưa hoàn thành
 Nếu chuyển tác trước đó hoàn thành thì sẽ
không xảy ra các vấn đề này, nhưng nếu
chuyển tác trước đó chưa hoàn thành hay
đang thực hiện chế độ rollback chúng ta sẽ
phải đọc dữ liệu cũ, dữ liệu sai.


10/31/12

 Đọc

ThS. Lương Thị Ngọc Khánh – K. CNTT

16


ĐọC BảN GHI 2 LầN
đọc mẫu tin 2 lần trong một chuyển tác
trong khi chuyển tác khác chỉ thông báo về
tình trạng dữ liệu trong một khoảng thời
gian quy định.

10/31/12

 Khi

ThS. Lương Thị Ngọc Khánh – K. CNTT

17


ĐọC CÁC BảN GHI KHÔNG CÓ
(PHANTOMS)

là chúng ta đọc được những bản ghi
không có. Vì những bản ghi đó xuất hiện

không bị tác động bởi các lệnh update hoặc
delete.
 Khác với 2 vấn đề trên phantoms là vấn đề
liên quan đến hệ điều hành, nó không yêu
cầu bất kỳ sơ đồ nào để mô tả.

10/31/12

 Nghĩa

ThS. Lương Thị Ngọc Khánh – K. CNTT

18


CậP NHậT MấT Dữ LIệU (LOST
UPDATE)
ra khi một chuyển tác cập nhật dữ liệu
vào cơ sở dữ liệu thành công, nhưng lại ghi
đè lên dữ liệu của chuyển tác khác.
 Xảy ra khi 2 chuyển tác đang đọc mẫu tin
dữ liệu, sau đó chuyển tác 1 ghi dữ liệu của
bản ghi, chuyển tác 2 cũng ghi kết quả chỉ
có chuyển tác 2 được cập nhật.

10/31/12

 Xảy

ThS. Lương Thị Ngọc Khánh – K. CNTT


19


CHế Độ LOCK


ThS. Lương Thị Ngọc Khánh – K. CNTT

Đây là loại căn bản nhất, lock chia sẻ tài nguyen
cho phép đọc dữ liệu, không cho phép thay đổi
bất kỳ thuộc tính nào của tài nguyên.

 Khóa


chia sẻ (Share locks)

10/31/12

 Khóa

độc quyền (exclusive locks)

Không tương thích với các loại khóa khác, khóa
này ngăn ngừa 2 người sử dụng cùng cập nhật,
xóa, thêm dữ liệu

20



VÍ Dụ
dụ để thiết lập một khóa độc quyền trên
bảng authors không một ai có thể hiệu
chỉnh bảng trong khi đang xem chúng, có
thể chạy truy vấn:


Select *
From authors (TABLELOCKXX)

 Một


ThS. Lương Thị Ngọc Khánh – K. CNTT



10/31/12

 Ví

số tham số:

NOLOCK

21


CHế Độ LOCK (TT)





Kết hợp giữa share lock và exclusive lock
Với câu lệnh update chỉ ra bản ghi bằng mệnh
đề where, trong khi chưa cần cập nhật thì sẽ là
trạng thái share lock. Khi câu lệnh update thực
hiện ở chế độ exclusive lock intent locks
Dùng giải quyết phân cấp đối tượng. Trong sql
server, intent locks chỉ giải quyết đến bảng chứ
không quan tâm đến từng bản ghi trong bản.

ThS. Lương Thị Ngọc Khánh – K. CNTT



cập nhật (Update locks)

10/31/12

 Khóa

22


CHế Độ LOCK (TT)


Schema modification locks: giản đồ thay đổi

cách tạo đổi tượng, không yêu cầu các phát biểu
create, alter, drop
Schema stability lock: tương tự share lock, lock
này ngăn ngừa các yêu cầu của các phát biểu
create, alter, drop khi đã thiết lập schema
modification lock.

ThS. Lương Thị Ngọc Khánh – K. CNTT



locks xuất phát từ 2 loại sau:

10/31/12

 Schema

23


VÍ Dụ
một quyển sách mới vào bảng sách
và đi kèm với nó là việc thêm vào một nhà
xuất bản mới vào bảng nhaxuatban và 2 tác
giả mới vào bảng tacgia. Viết kịch bản để
thêm tất cả các thông tin này sao cho tất cả
cùng kết thúc hoặc cùng hỏng.





ThS. Lương Thị Ngọc Khánh – K. CNTT



10/31/12

 Thêm

Sach(masach, tensach, sotrang, namxb, manxb)
Nhaxuatban(manxb, tennxb, diachi)
Tacgia(matg, tentg, ngaysinh)
Tacgia_sach(masach, matg)
24


VÍ Dụ


Docgia(madg, ngaysinh, hoten, diachi)
Viết thủ tục thực hiện công việc thêm độc giả
vào bảng độc giả sao cho độc giả này chưa tồn
tại trong bảng độc giả và tuổi lớn hơn 18.


ThS. Lương Thị Ngọc Khánh – K. CNTT



bảng sau:


10/31/12

 Cho

Gợi ý: các công việc cần làm:
 Kiểm tra mã độc giả trùng
 Thêm độc giả
 Kiểm tra tuổi

25


×