1. Trang chủ
  2. » Công Nghệ Thông Tin

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

20 815 2

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 20
Dung lượng 151,14 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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..  Tính riêng biệt Isolation: Tất cả các giao dịch đều phải

Trang 1

Giao tác – Transaction

1

Trang 2

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

Trang 3

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

Trang 4

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

Trang 5

Giao tác – transaction (tt)

5

Trang 6

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

Trang 7

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

Trang 8

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

Trang 9

Giao tác (tt)

9

Trang 10

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

Trang 11

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

Trang 12

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

Trang 13

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

Trang 14

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

Trang 15

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

Trang 16

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.

Trang 17

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)

Trang 18

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

Trang 19

Giải quyết vấn đề đọc dữ liệu rác:

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

Trang 20

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

Ngày đăng: 23/10/2014, 13:33

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w