Tải bản đầy đủ (.pptx) (20 trang)

Giao tác– transaction + thực hành kèm SOURCE

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 (270.55 KB, 20 trang )

Giao tác – Transaction
1
N i dung:ộ

Các khái niệm giao tác và khóa:

Các thuộc tính của giao tác

Các loại giao tác

Các mức giao tác

Một số vấn đề liên quan giao tác

Giao dịch và khóa

Bài tập thực hành giao tác
2
Giao tác - transaction

Một transaction hay một giao tác là một loạt
các hoạt động xảy ra được xem như một
công việc đơn. Nghĩa là hoặc thành công
toàn bộ hoặc không làm gì cả.

Ví dụ: chúng ta muốn chuyển $500 từ
account A sang account B. Như vậy công
việc này cần các bước sau:

Trừ $500 từ account A.


Cộng $500 từ account B.
3
Giao tác - transaction

Khi nào giao tác được xem là hoàn tất
(commited)?

Nếu vì lý do nào đó chỉ thực hiện được bước
1?
4
Giao tác – transaction (tt)
5
Mô hình giao tác trong SQL

Giao tác SQL được định nghĩa dựa trên các
câu lệnh sau:

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

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

6
Giao tác (tt)

Ví dụ: Lệnh ROLLBACK TRANSACTION.
BEGIN TRANSACTION Test_trans
UPDATE Employees SET LastName=‘Phuc”
WHERE EmployeeID=1
ROLLBACK TRANSACTION Test_trans
7
Giao tác (tt)

Câu lệnh: SAVE TRANSACTION tên

Đánh dấu một vị trí trong giao tác.

Trạng thái hiện tại được ghi lại trong giao tác.

Câu lệnh: ROLLBACK TRANSACTION tên

Hủy bỏ những thay đổi từ điểm đánh dấu đến
trước câu lệnh này.
8
Giao tác (tt)
9
Giao tác (tt)

Ví dụ: dùng điểm đánh dấu để quay lại.
BEGIN TRANSACTION Test_trans
SAVE TRANSACTION save_tras
UPDATE Employees SET LastName=‘Phuc”

WHERE EmployeeID=1
ROLLBACK TRANSACTION save_tras
10
Giao tác (tt)

Giao tác lồng nhau: các giao tác có thể được lồng nhau theo từng cấp.

Ví dụ: Ta có bảng SINHVIEN(MSSV,TENSV)

Ta xét giao tác sau:
BEGIN TRANSACTION
INSERT INTO SV VALUES('01','DONG')
INSERT INTO SV VALUES('02','TAY')
SAVE TRANSACTION S1
INSERT INTO SV VALUES('03','NAM')
ROLLBACK TRANSACTION S1
INSERT INTO SV VALUES('04','BAC')
COMMIT TRANSACTION
11
Các thu c tộ ính c a giao d chủ ị

Tính hoàn chỉnh (Atomicity): Giao dịch phải là một
thao tác trọn vẹn. Các thành phần của một giao dịch là
không thể phân chia được.

Tính nhất quán (Consistency): Khi giao dịch hoàn
thành thì dữ liệu của CSDL phải luôn luôn ở trạng thái
nhất quán.

Tính riêng biệt (Isolation): Tất cả các giao dịch đều

phải thể hiện được tính riêng biệt khi có sự thay đổi
dữ liệu trong csdl.

Tính bền vững (Durability): Giao dịch chỉ ở trạng thái
bền vững khi giao dịch được xác nhận.
12
Các loại giao dịch

Giao dịch tường minh

Giao dịch ngầm định

Giao dịch xác định tự động
13
Các mức giao dịch

Read Uncommited: Không đưa ra các khóa dùng chung
và do đó có thể đọc dữ liệu khi chưa xác nhận.

Read commited: Đây là mức mặc định riêng trong
SQL. SQL Server sử dung khóa dùng chung trong quá
trình đọc dữ liệu. Giao dịch khác đọc được dữ liệu chỉ
khi giao dịch này được xác nhận.

Repeatable Read: Ở mức này, các khóa sẽ được đặt
trên tất cả dữ liệu được truy vấn. Do đó, giao dịch khác
sẽ không thể cập nhật dữ liệu đã bị khóa.

Serializable: Đây là mức an toàn dữ liệu cao nhất. Ở
mức này, nó ngăn chặn người dùng khác trong lúc cập

nhật dữ liệu đến khi giao dịch tương ứng hoàn thành.
14
M t s v n đ :ộ ố ấ ề
Time TRANSACTION 1 TRANSACTION 2
1
2
3
4
5
6
7
8
9
10
BEGIN TRAN
READ_ITEM(X)
X=X-5
WRITE_ITEM(X)
ROLLBACK
X=50
X=45
X=45
X=50
BEGIN TRAN
READ_ITEM(X)
X=X+10
WRITE_ITEM(X)
X=45
X=55
X=55

MỨC UNCOMMITTED
15
Khóa - Lock

Là cơ cấu cho phép ngăn ngừa các hành động trên
đối tượng có thể gây ra xung đột. Có nghĩa là bạn
không thể làm gì trên đối tượng đó nếu có người
khác đang truy cập.

Chế độ Lock:

Shared locks: người dùng có thể đọc dữ liệu nhưng
không thể sửa.

Exclusive locks: ngăn ngừa 2 người sử dụng cùng cập
nhật mẩu tin cùng lúc.

Update locks: là kết hợp giữa Shared locks và Exclusive
locks, ở chế độ Shared locks khi lệnh Update chưa thực
thi, thực thi rồi ở chế độ Exclusive locks.
Khóa - Lock

Schema locks: khi định nghĩa bảng bị thay đổi,
ví dụ: khi thêm cột mới vào bảng,…

Bulk update locks: đây là khóa đặc biệt.

Ví dụ: nếu bạn muốn chắc rằng không ai đang
thay đổi dữ liệu, dùng từ khóa NOLOCK.
SELECT * FROM EMPLOYEES WITH

(NOLOCK)
Giao dịch và khóa

Bên trong các mục dữ liệu giao dịch luôn được khóa

Exclusive lock: được dùng với các xử lý như insert,
update và delete. Các giao dịch khác không được phép
đọc hay thay đổi các mục dữ liệu mà nó đang được x-
lock.

Share lock (S-lock): được dùng với các xử lý để đọc
thông tin. Các giao dịch khác được phép đọc các mục
dữ liệu nhưng nó không được phép thay đổi.

Một S-lock chỉ được yêu cầu khi không có X-Lock.

Một X-lock chỉ được yêu cầu khi giao dịch khác không
có S-lock trên mục dữ liệu đó.
18
Giải quyết vấn đề đọc dữ liệu rác:
Time TRANSACTION 1 TRANSACTION 2
1
2
3
4
5
6
7
8
9

10
11
12
13
14
15
16
17
BEGIN TRAN
S-LOCK
READ_ITEM(X)
UNLOCK
X-LOCK
X=X-5
WRITE_ITEM(X)
ROLLBACK
X=50
X=45
X=45
X=50
BEGIN TRAN
S-LOCK
WAIT
S-LOCK
READ_ITEM(X)
UNLOCK
X-LOCK
X=X+10
WRITE_ITEM(X)
X=50

X=60
X=60
19
Bài thực hành 01

Lần lượt thực hiện các thao tác ứng với các bài
1, 2 …và 7 trên 2 file “Transaction1 và
Transaction2” (xem 2 file gửi kèm).
20

×