You are on page 1of 18

Quản Lý

Giao Tác
NHÓM 8
Thành Viên Nhóm
01 02
Huỳnh Hữu Đức Nguyễn Thành Phát
MSSV: 2001207422 MSSV:2001207178

04 05
Đoàn Quang Minh Đặng Văn Trọng
MSSV: 2001202153 MSSV: 2001202153
Khái niệm và tính chất
của giao tác
01

Khái niệm giao tác


Một giao tác (transaction) là một hành
động hay một chuỗi các hành động truy
cập vào CSDL hoặc làm thay đổi nội dung
CSDL, giao tác được đưa ra bởi một người
sử dụng hay một chương trình ứng dụng.
Một số thuật ngữ liên quan đến giao tác:
Begin [transaction/tran] : bắt đầu một
transaction
Commit [transaction/tran] : hoàn tất một
transaction
Rollback [transaction/tran] : quay lui, hủy
bỏ toàn bộ phần giao tác đã thực hiện trước đó
02
Các tính chất của
giao tác
Để đảm bảo tính nhất quán của
dữ liệu, các hệ QTCSDL cần đảm
bảo các tính chất sau đây cho
giao tác, tính chất ACID
Tính nguyên tố (Atomicity): toàn bộ các thao tác
trong cùng một giao tác đều được thực hiện hoặc
không một thao tác nào trong chúng được thực hiện.
Một giao tác là một đơn vị công việc không thể phân
chia
Tính nhất quán (Consistency): một giao tác phải chuyển CSDL từ
một trạng thái nhất quán này sang một trạng thái nhất quán khác

Tính cô lập (Isolation): Các giao tác phải được thực hiện một cách
độc lập với nhau. Nói một cách khác những tác động của giao tác
này sẽ không thể thấy được đối với những giao tác khác, khi giao
tác này chưa thực hiện xong hoàn toàn

Tính bền vững (Durability): những thay đổi của CSDL do tác động
của một giao tác thành công là bền vững, không bị mất đi
2. Các vấn đề trong xử
lý truy xuất đồng thời:
Giả sử có 2 transaction đang truy xuất đồng thời trên 1 đơn vị dữ
liệu. Có tất cả 4 trường hợp sau:
Giả sử có 2 transaction đang truy xuất đồng thời trên 1 đơn vị dữ
liệu. Có tất cả 4 trường hợp sau:

Khi có 2 transaction (của 2 connection


khác nhau) có ít nhất 1 thao tác ghi trên
cùng một đơn vị dữ liệu sẽ xảy ra tình
trạng tranh chấp. Nếu để tình trạng tranh
chấp này xảy ra sẽ dẫn đến những sai sót
trên CSDL. Để giải quyết các vấn đề
tranh chấp nêu trên, hệ quản trị cơ sở dữ
liệu cần sử dụng các phương thức khóa,
nhờ vậy mà khi có tranh chấp xảy ra hệ
quản trị cơ sở dữ liệu có thể quyết định
transaction nào được thực hiện và
transaction nào phải chờ.
Trong môi trường truy xuất đồng thời, có thể xảy ra một số vấn đề như sau:

1. Mất dữ liệu cập nhật (Lost update)

Trường hợp này xảy ra khi 2


hoặc nhiều transaction cùng update
1 row từ giá trị ban đầu của nó,
Update cuối cùng sẽ ghi đè các
update bởi các transaction khác dẫn
đến mất dữ liệu.
Trong môi trường truy xuất đồng thời, có thể xảy ra một số vấn đề như sau:

2. Đọc phải dữ liệu rác (Dirty read)

Tác động này xảy ra khi 1


transaction A đọc 1 row khi nó
đang được update bởi 1
transaction B khác và chưa
được commit. Transaction A sẽ
đọc dữ liệu vẫn chưa được
commit.
Trong môi trường truy xuất đồng thời, có thể xảy ra một số vấn đề như sau:

2. Đọc phải dữ liệu rác (Dirty read)

Ví dụ 1 người A trong tài khoản có 3 triệu và


đang thực hiện 1 giao dịch để nạp vào 2 triệu cho tài
khoản. Transaction đã chạy update xong tài khoản
lên 5 triệu nhưng vẫn còn 1 số thao tác chưa chạy
tới và dữ liệu này vẫn chưa được commit. 1 người B
khác dùng chung tài khoản thực hiện kiểm tra số dư,
và kết quả trả về là 5 triệu. Giao dịch của người A
xảy ra sự cố và báo lỗi, dữ liệu được roll back về 3
triệu. Như vậy người B đang nhận được dữ liệu sai .
Trong môi trường truy xuất đồng thời, có thể xảy ra một số vấn đề như sau:

3. Không thể đọc lại (Unrepeatable data)

Tình trạng này xảy ra khi một


giao tác T1 vừa thực hiện xong
thao tác đọc trên một đơn vị dữ
liệu (nhưng chưa commit) thì giao
tác khác (T2) lại thay đổi (ghi) trên
đơn vị dữ liệu này. Điều này làm
cho lần đọc sau đó của T1 không
còn nhìn thấy dữ liệu ban đầu
nữa.
Trong môi trường truy xuất đồng thời, có thể xảy ra một số vấn đề như sau:

4. Bóng ma dữ liệu (Phantom)

Là tình trạng mà một giao tác


đang thao tác trên một tập dữ liệu
nhưng giao tác khác lại chèn thêm
các dòng dữ liệu vào tập dữ liệu mà
giao tác kia quan tâm.

You might also like