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

Bài giảng Cơ sở dữ liệu: Quản lý giao dịch - ThS. Nguyễn Ngọc Quỳnh Châu

49 98 0

Đ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 49
Dung lượng 2,41 MB

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

Nội dung

Bài giảng Cơ sở dữ liệu: Quản lý giao dịch cung cấp cho người học các kiến thức: Khái niệm giao dịch, 4 tính chất của giao dịch, các loại giao dịch, giao dịch tường minh, giao dịch không tường minh, giao dịch tự động. Mời các bạn cùng tham khảo nội dung chi tiết.

Trang 1

QuẢN LÝ GIAO DỊCH

Trang 2

GIAO DỊCH

Trang 3

KHÁI NIỆM

trình truy xuất vào dữ liệu và có thể làmthay đổi nội dung của nhiều hạng mục dữliệu

một khối lệnh, có thể thành công hoàn

toàn hoặc thất bại hoàn toàn

Trang 4

4 TÍNH CHẤT CỦA GIAO DỊCH

 Atomic (nguyên tử): đảm bảo toàn bộ hoạt động của giao dịch thành công hoặc thất bại.

 Consistency (tính nhất quán): khi transaction

hoàn thành, dữ liệu phải ở trạng thái toàn vẹn

 Isolation (cô lập): khi có nhiều giao dịch thực

hiện đồng thời thì phải đảm bảo chúng được giữ độc lập để các kết quả không ảnh hưởng lẫn nhau

 Durability (bền vững): sau khi giao dịch thực

hiện, nếu có sự cố thì tất cả các dữ liệu thay đối trong giao dịch vẫn được hồi phục lại theo yêu cầu của giao dịch

Trang 6

Ví dụ

các lệnh trong giao dịch thành công và

A=950, B=2050

READ(B) mà hệ thống xảy ra sự cố thìtoàn bộ giao dịch bị hủy: toàn bộ các câulệnh trong giao dịch đều không được thựchiện thành công => A=1000 và B=2000

Trang 7

VÍ dụ

phải ở trạng thái nhất quán: tài khoản A phải có số tiền là 950 và B có 2050

Trang 8

Ví dụ

thành công, giả sử có sự cố thì dữ liệu saukhi khôi phục phải đảm bảo là A có 950

và B có 2050

đang thực hiện đến câu lệnh READ(A) thì

có 1 giao dịch khác cũng thực hiện việcchuyển 1000 từ A sang C Khi đó hai giaodịch sẽ tương tranh với nhau

Trang 9

Tại sao cần phải quản lý giao dịch?

trên 1 đơn vị dữ liệu

lý các giao dịch (sử dụng các mức cô lậphoặc khóa) để khi có tranh chấp xảy ra thì

sẽ xác định xem transaction nào được ưutiên, transaction nào phải chờ

chấp

Trang 10

Tại sao cần phải có các mức cô

lập/khóa

trường đa người dùng

liệu bên trong CSDL có thể bị sai về logic, các query chạy trên đó sẽ đưa ra các kết

quả không như mong đợi

vào một bảng, server sẽ khóa/cô lập bảng

đó lại cho riêng giao dịch đó

Trang 11

Những vấn đề trong truy xuất

đồng thời

Trang 12

Những vấn đề trong truy xuất

◦ Vào thời điểm t1, giao dịch 1 chuyển 400 từ A sang B

◦ Vào thời điểm t2, giao dịch T2 cũng thực hiện giao dịch chuyển 300 cho từ A sang C

◦ Giao dịch A và B đều đọc thấy dữ liệu còn 500 thực

hiên giao dịch

=> Tính nhất quán bị phá vỡ, nhà băng mất tiền

Trang 13

Những vấn đề trong truy xuất

đồng thời

muốn cập nhật 1 đơn vị dữ liệu Khi đó, tác dụng của giao dịch cập nhật sau sẽ ghi đè lên tác dụng cập nhật của giao dịch trước

◦ Vào lúc t1, giao dịch A bán 100 vé và thực hiện cập nhật

Trang 14

Những vấn đề trong truy xuất

đồng thời

 Unrepeatable reads: xảy ra khi giao dịch đọc một bản ghi 2 lần mà lần đọc sau cho kết quả khác lần đọc trước

 Ví dụ: ban đầu lương nhân viên phòng hành chính là 4 triệu

◦ Vào lúc t1, giao dịch A lấy ra lương của nhân viên hành chính

◦ Vào lúc t2, giao dịch B cập nhật lương của nhân viên phòng hành chính là 5 triệu

◦ Vào lúc t3, giao dịch A lại lấy ra lương của nhân viên hành chính

◦ Giao dịch A nhận được 2 kết quả khác nhau

Trang 15

Những vấn đề trong truy xuất

 t3: A đọc tiếp và đưa bản ghi 6 vào báo cáo

 Vậy báo cáo này vừa bị thiếu dữ liệu, vừa bị thừa dữ liệu.

Trang 17

Read Uncommitted

 Giao tác đọc dữ liệu mà không cần quan tâm dữ liệu đó có đang bị thay đổi bởi giao tác khác

không.

 Ưu điểm: tăng hiệu năng đọc của các tiến trình

 Nhược điểm: không ngăn chặn được 4 vấn đề trong tương tranh

=> Tùy vào ứng dụng để đặt mức isolation Nếu việc đọc sai có thể chấp nhận được thì không

cần đặt mức isolation cao hơn để tăng hiệu năng đọc cho hệ thống.

Trang 18

select * from test commit tran

ID Name

1 a

2 b

3 c

Trang 20

Read Committed

lập này, nó không được phép đọc dữ liệu(SELECT/UPDATE/DELETE) đang cập

nhật mà phải đợi đến khi giao dịch đó

hoàn tất

Trang 21

select * from test commit tran

Trang 23

Read Committed

 Ngăn được Dirty Read, Lost Update

 Không ngăn được hiện tượng

Unrepeatable Read, Phantom

Trang 25

Repeatable Read

dữ liệu đang được đọc bởi transaction khác cho đến khi transaction đó hoàn tấtviệc đọc

read, lost update, unrepeatable read

đề phantom

Trang 26

 Ưu điểm: giải quyết được vấn đề dirty read và lost update

đề phantom, unrepeatable read

Trang 27

SELECT * FROM test

Wait for delay ‘00:00:10’

SELECT * FROM test

Commit tran

begin tran Update test set A=‘x’ where B>2 commit tran

Trang 29

Repeatable Read

BEGIN TRAN

set tran isolation level repeatable read

SELECT * FROM test

Wait for delay ‘00:00:10’

SELECT * FROM test

Commit tran

begin tran Update test set A=‘x’ where B>2 Select * from test

Trang 30

 Mức Repeatable bảo vệ được dữ liệu khỏi câu lệnh UPDATE nhưng không bảo vệ

được khỏi câu lệnh INSERT và DELETE

 Mức Serializable bắt buộc các giao tác khác phải chờ đợi cho đến khi giao tác đó hoàn thành nếu muốn thay đổi dữ liệu

 Ưu điểm: giải quyết được vấn đề phantom

 Nhược điểm: làm chậm hoạt động của các giao dịch trong hệ thống

Trang 31

T1 T2

BEGIN TRAN

set tran isolation level repeatable read

SELECT * FROM test

Wait for delay ‘00:00:10’

SELECT * FROM test

Commit tran

begin tran Insert into test values (‘d’, 5) Select * from test

commit tran

a 1

b 2

c 3

A B a 1

b 2

c 3

d 5

A B a 1

b 2

c 3

d 5

A B a 1

b 2

c 3

Serializable

Trang 32

BEGIN TRAN

set tran isolation level serializable

SELECT * FROM test

Wait for delay ‘00:00:10’

SELECT * FROM test

Commit tran

begin tran Insert into test values (‘d’, 5) Select * from test

commit tran

a 1

b 2

c 3

A B a 1

b 2

c 3

A B a 1

b 2

c 3

d 5

Trang 33

CÁC LOẠI GIAO DỊCH

Trang 34

GIAO DỊCH TƯỜNG MINH

(EXPLICIT TRANSACTION)

 Là giao dịch phải khai báo trước

 BEGIN TRAN: giao dịch bắt đầu

công

trạng thái tại thời điểm ban đầu hay

về một điểm dừng nào đó trong giao dịch

Trang 35

GIAO DỊCH TƯỜNG MINH

(EXPLICIT TRANSACTION)

 Ví dụ: Nhân viên (MaNV, HoTen, MaPhong)

Phong (Map, TenP, Soluong)

 Viết một giao dịch để thay đổi phòng làm việc của một nhân viên ‘NV01’ từ phòng ‘KHCN’ sang phòng ‘NS’

Trang 36

GIAO DỊCH KHÔNG TƯỜNG MINH (IMPLICIT TRANSACTION)

biểu BEGIN TRAN Bản thân nó được tự độngkhởi tạo

Trang 37

GIAO DỊCH KHÔNG TƯỜNG MINH

bật ON cho một kết nối, SQL Server tự độngbắt đầu một transaction khi nó thực thi bất kỳcác lệnh sau:

Trang 39

GIAO DỊCH TƯỜNG MINH

(EXPLICIT TRANSACTION)

BEGIN TRAN

Declare @old_dept char(10)

Select @old_dept=Maphong from NHANVIEN where MaNV=‘KS001’

UPDATE NHANVIEN SET PHONG='NS‘

Trang 40

GIAO DỊCH TƯỜNG MINH

(EXPLICIT TRANSACTION)

 Ví dụ: Bảng TAIKHOAN cho biết số tài khoản

(SOTK) và số tiền trong tài khoản (SOTIEN) Viết giao dịch để chuyển 100 từ số tài khoản A sang số tài khoản B

Trang 41

END

Trang 42

 Khi gặp thông báo BEGIN TRAN, SQL Server chuyển từ chế độ autocommitsang chế độ explicit

autocommit khi transaction tường mình

đã được chuyển giao (commit) hay trảngược về đầu (roll back) hay khi mode transaction ngầm định bị tắt

Trang 43

Các loại LOCK trong SQL Server

Trang 45

 Exclusive Lock:

◦ Cho phép ghi dữ liệu (insert, delete, update)

◦ Tại một thời điểm, chỉ có tối đa một giao tác

có khóa exclusive lock trên 1 đơn vị dữ liệu

◦ Khi một đơn vị đang có Shared Lock thì có thể thiết lập Exclusive Lock trên đơn vị dữ liệu đó không?

◦ Khi một đơn vị đang có Exclusive Lock thì có

thể thiết lập một Shared Lock lên đơn vị dữ liệu đó không

Trang 47

Chỉ định khóa trong từng lệnh

lập được chỉ định sẽ tác dụng lên toàn

bộ câu lệnh nằm ngay sau nó

trực tiếp, nó sẽ hoạt động theo mức côlập chung hiện hành của transaction

Trang 49

Chỉ định khóa trong từng lệnh

READUNCOMMITTED/NOLOCK Tương tự như mức READ UNCOMMITTED

REPETABLEREAD Tương tự như mức REPEATABLE READ SERIALIZABLE/HOLDLOCK Tương tự như mức SERIALIZABLE

READPAST

Ngày đăng: 15/05/2020, 21:55

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm