Chương II. Quản lý truy xuất
đồng thời
1
Nội dung
Giới thiệu
Khái niệm về giao tác
Các vấn đề truy xuất đồng thời
Lịch thao tác
Các kỹ thuật khóa dữ liệu
Kỹ thuật nhãn thời gian
Các kỹ thuật khác
2
Giới thiệu
Thực tế, CSDL được khai thác một cách đồng thời bởi nhiều
người sử dụng. Thậm chí còn có nhiều tiến trình trong một
chương trình cũng có thể được thực hiện đồng thời.
Ví dụ: hệ thống đặt chỗ trên các chuyến bay của một hãng
hàng không. Nhiều đại lý có thể cùng bán vé. Hành khách có
thể mua vé, đổi vé, trả vé do đó danh sách khách hàng và số
ghế của các chuyến bay sẽ bị thay đổi. Chuyện gì sẽ xảy ra
nếu hai hay nhiều đại lý cùng bán một ghế cho nhiều khách
hàng? Hệ quản trị CSDL này phải có khả năng giải quyết vấn
đề tranh chấp đó để không một ghế nào trên một chuyến bay
có thể bán nhiều hơn một lần.
3
Khái niệm về giao tác (Transaction)
Định nghĩa
Tính chất ACID của giao tác
Các thao tác của giao tác
Trạng thái của giao tác
4
Định nghĩa
Giao tác là 1 đơn vị xử lý nguyên tố gồm 1 chuỗi các
hành động tương tác lên CSDL. Khi thực hiện một
giao tác hoặc phải thực hiện tất cả các hành động của
nó hoặc thì không thực hiện hành động nào hết.
CSDL nhất quán 1
CSDL nhất quán 2
Giao tác
5
Ví dụ
6
Tính chất ACID của giao tác
Tính Nguyên tố (Atomicity)
Hoặc là toàn bộ hoạt động của giao dịch được phản ánh
đúng đắn trong CSDL hoặc không có hoạt động nào cả.
Nói cách khác, tác dụng của các câu lệnh trong một giao
tác phải như là một câu lệnh đơn. Không chia nhỏ ra
được.
7
Ví dụ 1
A=100, B=200 (A+B=300)
Tại thời điểm sau khi write(A,t)
A=50, B=200 (A+B=250) - CSDL không nhất quán
Tại thời điểm sau khi write(B,t)
A=50, B=250 (A+B=300) - CSDL nhất quán
Nếu T không bao giờ bắt đầu thực hiện hoặc T được
đảm bảo phải hoàn tất thì trạng thái không nhất quán sẽ
không xuất hiện
T:Read(A,t);
t:=t-50;
Write(A,t);
Read(B,t);
t:=t+50;
Write(B,t);
8
Tình huống
Đặt Ti là một giao dịch chuyển 50 USD từ tài khoản
A đến tài khoản B. giao dịch này được định nghĩa như
sau:
Ti: Read(A);
A:=A-50;
Write(A);
Read(B);
B:=B+50;
Write(B);
9
Giả sử trước khi thực hiện giao dịch Ti, các giá trị của các tài
khoản A và B tương ứng là 1000USD và 2000USD. Trong
khi thực hiện giao dịch Ti, một lỗi xảy ra (phần cứng, phần
mềm,, mất điện,…) ngăn chặn Ti hoàn thành thực hiện giao
dịch chuyển khoản. Giả sử lỗi này xảy ra sau khi thao tác
Write(A) đã được thực hiện và trước khi thao tác Write(B)
được thực hiện.
Trong trường hợp này, giá trị cùa tài khoản A và B được ghi
nhận trong CSDL là 950USD và 2000 USD. Hệ thống đã
hủy 50USD do lỗi này tong A+B không còn được bảo
toàn
10
Tình huống
Tính chất ACID của giao tác (tt)
Tính Nhất quán (Consistency)
Bất kỳ CSDL nào thì mọi ràng buộc tòan vẹn phải thỏa.
Tại bất kỳ thời điểm mà mọi RBTV được thỏa gọi là tính
nhất quán.
Một giao tác phải biến CSDL từ trạng thái nhất quán này
sang trạng thái nhất quán khác không được phá vở trạng
thái nhất quán. E1 T E2 (E1nhất quán thì E2 phải nhất
quán).
Ví dụ:phái là nam hoặc nữ, nhưng gõ đến phái Enter đi
qua mà cho phép thì không còn trạng thái nhất quán.
11
Ví dụ 2
Consistency
Tổng A+B là không đổi
Nếu CSDL nhất quán trước khi T được thực hiện
thì sau khi T hoàn tất CSDL vẫn còn nhất quán
T: Read(A,t);
t:=t-50;
Write(A,t);
Read(B,t);
t:=t+50;
Write(B,t);
12
Tính chất ACID của giao tác (tt)
Tính Cô lập (Isolation)
Một giao tác không quan tâm đến các giao tác khác xử
lý đồng thời với nó
Khi có n giao tác xử lý đồng thời phải làm sao bảo
đảm là tôi có tính độc lập của riêng tôi, mà tôi chạy
giống như tôi chạy một mình, không biết xung
quanh tôi có n người khác đang chạy. Hệ thống
làm sao bảo đảm khi có n người chạy 1 lúc hệ
thống làm sao bảo đảm n người này chạy một
mình.
13
Ví dụ 3
Giả sử có 1 giao tác T’ thực hiện phép toán A+B và chen
vào giữa thời gian thực hiện của T
T’ kết thúc: A+B=50+200=250
T kết thúc: A+B=50+250=300
Hệ thống của các giao tác thực hiện đồng thời có trạng
thái tương đương với trạng thái hệ thống của các giao tác
thực hiện tuần tự theo 1 thứ tự nào đó.
T:Read(A,t);
t:=t-50;
Write(A,t);
Read(B,t);
t:=t+50;
Write(B,t);
T’
14
Như ví dụ trên, khi CSDL ở trạng thái không toàn
vẹn trong giao dịch chuyển tiền từ A đến B đang
thực hiện, ở đó tài khoản A đã giảm đi nhưng chưa
tăng tài khoản B. Nếu một giao dịch thứ hai chạy
đồng thời đọc A và B tại thời điểm trung gian này
và tính tổng A+B, nó sẽ quan sát thấy một giá trị
không đúng đắn.
Hơn nữa, nếu giao dịch thứ hai thực hiện. Việc cập
nhật trên A và B và dựa vào những giá trị không
đúng đắn mà nó nhận được, CSDL có thể để lại
một trạng thái không toàn vẹn sau khi cả hai giao
dịch đã hoàn thành
15
Tính chất ACID của giao tác (tt)
Tính Bền vững (Durabil ity)
Mọi thay đổi mà giao tác thực hiện trên CSDL
phải được ghi nhận bền vững
Khi T kết thúc thành công
Dữ liệu sẽ không thể nào bị mất bất chấp có sự
cố hệ thống xảy ra
T:Read(A,t);
t:=t-50;
Write(A,t);
Read(B,t );
t:=t+50;
Write(B,t);
16
Tính bền vững đảm bảo rằng một khi giao dịch được
hoàn thành, tât cả các cập nhật trên CSDL là bền
vững thậm chí nếu có lỗi hệ thống sau khi giao dịch
hoàn thành thực hiện. Giả sử một lỗi hệ thống có thể
dẫn đến mất mát dữ liệu trong bộ nhớ chính, nhưng
dữ liệu được ghi vào đĩa không bao giờ bị mất.
17
Các thao tác của giao tác
Giả sử CSDL gồm nhiều đơn vị dữ liệu
Một đơn vị dữ liệu (element)
Có một giá trị
Được truy xuất và sửa đổi bởi các giao tác
Quan hệ (relation) - Lớp (class)
Khối dữ liệu trên đĩa (block) / trang (page)
Bộ (tuple) - Đối tượng (object)
18
Các thao tác của giao tác (tt)
Input(X)
Read(X, t)
Buffer Disk
XXt
Write(X, t)
Output(X)
Buffer Disk
X
t
X
X
X
Bufffer manager
Input
Output
Transaction
Read
Write
19
Ví dụ
Giả sử CSDL có 2 đơn vị dữ liệu A và B với ràng
buộc A=B trong mọi trạng thái nhất quán
Giao tác T thực hiện 2 bước
A:=A*2
B:=B*2
Biểu diễn T
Read(A,t) ; t=t*2; Write(A,t);
Read(B,t) ; t=t*2; Write(B,t);
20
Ví dụ (tt)
21
Hành động
Read(A,t)
t:=t*2
Write(A,t)
Read(B,t)
t:=t*2
Write(B,t)
Output(A)
Output(B)
t
8
16
16
8
16
16
16
16
Mem A Mem B Disk BDisk A
8
8
16
16
16
16
16
16
8
8
16
16
16
8
8
8
8
8
8
16
16
8
8
8
8
8
8
8
16
Trạng thái của giao tác
22
Trạng thái của giao tác
Active (kích hoạt)
Ngay khi bắt đầu thực hiện thao tác đọc/ghi
Partially committed (hoàn thành bộ phận)
Sau khi lệnh thi hành cuối cùng thực hiện
Failed (thất bại)
Sau khi nhận ra không thể thực hiện các hành động được nữa
Aborted
Sau khi giao tác được quay lui và CSDL được phục hồi về
trạng thái trước trạng thái bắt đầu giao dịch
Bắt đầu lại giao tác (nếu có thể)
Hủy giao tác
Committed (hoàn thành)
Sau khi mọi hành động hoàn tất thành công
23
T-SQL đặc trưng của giao tác
24
Các vấn đề truy xuất đồng thời
Vấn đề mất dữ liệu đã cập nhật (Lost Update)
Vấn đề không thể đọc lại được(Unrepeated Read)
Vấn đề dữ liệu chưa hoàn tất (Uncommitted
Dependency )
25