Là một tập hợp các thao tác thực thi xuống database cùng với nhau như là một khối thống nhất của công việc unit of work; hoặc là chúng đều thực thi thành công hoàn toàn hoặc không thực h
Trang 1BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP THỰC PHẨM TP.HỒ CHÍ MINH
KHOA: CÔNG NGHỆ THÔNG TIN
-o0o
-BÁO CÁO KẾT MÔN: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU
ĐỀ TÀI: CÁC VẤN ĐỀ TRONG XỬ LÝ TRUY XUẤT ĐỒNG THỜI
Đề tài 4.1
Nhóm: 13
Thành viên:
1 Nguyễn Tường Duy - 2001207427
2 Đỗ Đức Sơn – 2001200035
3 Nguyễn Trương Nhật Hoàng – 2001170059
4 Nguyễn Ngọc Phương – 2001202208
5 Huỳnh Thanh Thiện - 2001181333
Giảng viên hướng dẫn: Đinh Thị Mận
Thành phố Hồ Chí Minh, tháng 12 năm 2022
Trang 2MỤC LỤC
I Giới thiệu 3
II Khái niệm và tính chất của giao tác 4
1 Khái niệm 4
2 Khai báo giao tác trong T-SQL 5
3 Tính chất của giao tác (ACID) 5
3.1 Tính nguyên tố (tính bảo toàn) (Atomicity) 5
3.2 Tính nhất quán (Consistency) 6
3.3 Tính độc lập (Isolation) 6
3.4 Tính bền vững (Durability) 7
4 Các thao tác của giao tác 8
5 Các trạng thái của giao tác 8
6 Transaction Log 9
III Các vấn đề trong xử lý truy xuất đồng thời 9
1 Mất dữ liệu đã cập nhật (Updated lost) 10
2 Đọc phải dữ liệu rác (Dirty read) 11
3 Không thể đọc lại (Unrepeated read) 12
4 Bóng ma dữ liệu (Phantom problem) 13
Trang 3MSSV Họ tên Công việc Hoàn
thành
2001207427 Nguyễn Tường Duy Dirty read , Demo, kiểm tra 100%
2001200035 Đỗ Đức Sơn Update lost, Giao tác, word,
2001170059 Nguyễn Trương Nhật Hoàng Giao tác, Update lost,
powerpoint, kiểm tra 100%
2001202208 Nguyễn Ngọc Phương Phantom problem, kiểm tra 100%
2001181333 Huỳnh Thanh Thiện Unrepeated read, kiểm tra 100%
2
Trang 4I Giới thiệu
Hai yêu cầu cơ bản của ứng dụng khai thác CSDL trong thực tế:
- Cho phép nhiều người dùng đồng thời khai thác CSDL nhưng phải giải
quyết được các tranh chấp.
- Sự cố kỹ thuật có thể luôn luôn xảy ra nhưng phải giải quyết được vấn đề về
nhất quán dữ liệu.
Một số tình huống về xử lý đồng thời
- “Nhiều người cùng rút tiền từ một tài khoản”
-> Lỗi: Có thể rút nhiều hơn số tiền thực có
3
Trang 5
-> Phải giải quyết được tranh chấp để đảm bảo được nhất quán dữ liệu
- “Thêm một học sinh mới”
-> Lỗi: Có thể xảy ra trường hợp học sinh đã được thêm nhưng sĩ số không được cập nhật
II Khái niệm và tính chất của giao tác
1 Khái niệm
Giao tác (Transaction) là gì?
Là một tập hợp các thao tác thực thi xuống database cùng với nhau như là một khối thống nhất của công việc (unit of work); hoặc là chúng đều thực thi thành công hoàn toàn hoặc không thực hiện bất kỳ lệnh nào (all or nothing)
4
Rút 70
Rút 80
Rút 90
Trang 62 Khai báo giao tác trong T-SQL
BEGIN TRANSACTION Bắt đầu giao tác
COMMIT TRANSACTION Kết thúc giao tác thành công
ROLLBACK TRANSACTION Kết thúc giao tác không thành công CSDL
được đưa về tình trạng trước khi thực hiện giao tác
3 Tính chất của giao tác (ACID)
3.1 Tính nguyên tố (tính bảo toàn) (Atomicity)
“Hoặc là tất cả hoặc là không gì hết”
Một giao tác có nhiều hành động thì hoặc tất cả các hành động trong giao tác
đó đều được hoàn thành hoặc không có bất cứ hành động nào được hoàn thành
Ví dụ: Việc chuyển tiền gồm 2 hành động trừ tiền và cộng tiền Giao tác
chuyển tiền từ tài khoản A sang tài khoản B, việc cộng tiền vào tài khoản B
sẽ không được thực hiện nếu việc trừ tiền tài khoản A chưa được hoàn thành
5
Trang 7Recommandé pour toi
B1-AV2 Speaking Review Print - Sao chép
Ôn tập Speaking AV3 - anh văn 3
Suite du document ci-dessous
3
6
Trang 83.2 Tính nhất quán (Consistency)
“Dữ liệu từ thời điểm start transaction với lúc kết thúc phải nhất quán”
- Thuộc tính Consistency yêu cầu tính nhất quán dữ liệu cho database Khi
có một giao tác được hoàn thành, tất cả dữ liệu phải được bảo toàn các mối liên kết dù cho tiến trình thao tác thành công hay thất bại
- Dữ liệu trong cơ sở dữ liệu phải luôn được đặt trong trạng thái hợp lệ ở bất
kỳ thời điểm nào, trước và sau khi thực hiện mỗi hành động giao tác Điều này có nghĩa là nếu hành động đầu tiên của tiến trình gặp lỗi thì hoặc là rollback lại, hoặc là tiến trình tiếp theo sẽ không được thực hiện
Ví dụ: Một hành động chuyển tiền từ một tài khoản A sang tài khoản B gồm
trừ tiền tài khoản A và cộng tiền vào tài khoản B Khi đã trừ tiền từ tài khoản
A nhưng nhưng cộng tiền vào tài khoản B thất bại thì giao tác thất bại, toàn
bộ giao tác sẽ được rollback lại trạng thái ban đầu
3.3 Tính độc lập (Isolation)
“Nếu chúng ta có nhiều transaction cùng một lúc thì phải đảm bảo là các transaction này xảy ra độc lập, không tác động lẫn nhau trên dữ liệu”
- Là thuộc tính nói về tính độc lập của các giao tác khi thực thi đồng thời trên hệ thống Nếu cùng một lúc, có nhiều tiến trình cùng diễn ra thì cần một
cơ chế đưa ra để bảo đảm rằng các tiến trình này có thể hoạt động song song
mà không ảnh hưởng đến nhau
Ví dụ: Trong trường hợp một khách hàng chuyển tiền vào ngân hàng và một
nhân viên kế toán rút tiền ra từ ngân hàng cùng diễn ra một lúc Lúc này, cơ
sở dữ liệu sẽ thực hiện đồng thời hai hành động là cộng thêm vào số dư của khách hàng, đồng thời trừ đi số tiền kế toán rút ra Sẽ có cơ chế để cả hai
6
Trang 9hành động này được diễn ra thành công song song mà không ảnh hưởng đến việc xử lý database
3.4 Tính bền vững (Durability)
“Dữ liệu sau khi thực hiện transaction sẽ không thay đổi nếu chúng ta gặp vấn đề gì đó liên quan đến database”
- Thuộc tính này đưa ra để đảm bảo rằng khi các Transaction diễn ra thành công thì tác dụng nó tạo ra với cơ sở dữ liệu phải bền vững Dù hệ thống có xảy ra bất kỳ lỗi gì thì dữ liệu luôn được khôi phục lại nguyên trạng
Ví dụ: Đối với các tiến trình giao dịch tiền qua ngân hàng Khi các
Transaction hoàn tất, dữ liệu sẽ được ghi lại dưới dạng đĩa cứng, các giao dịch cũng được ghi chép lại Nếu có bất kỳ sự cố nào xảy ra đều có thể dễ dàng backup lại data,thường dùng cơ chế ghi nhận bằng transaction log Lệnh Transaction:
Trong đó: <BEGIN TRY>…<END TRY>: để có lỗi xảy ra có thể rollback transaction
7
Trang 104 Các thao tác của giao tác
Read (X, t): Đọc đơn vị dữ liệu X vào t Write (X, t): Ghi t vào đơn vị dữ liệu X
5 Các trạng thái của giao tác
8
Trang 116 Transaction Log
- Nhật ký giao tác (Transaction log) là một File riêng biệt (hoặc lưu ở vùng ổ đĩa riêng) ở trong database server Nó lưu trữ dấu vết thực hiện của các thao tác
- Bằng cách lưu trữ dấu vết thực hiện trong tệp nhật ký (file log), database server dễ dàng khôi phục lại dữ liệu khi gặp sự cố
- Transaction log đảm bảo tính hoàn chỉnh và tính bền vững
- SQL Server viết tất cả các thay đổi trên CSDL xuống transaction log, vì vậy nếu transaction đã bắt đầu nhưng chưa chạy xong, chúng ta vẫn có thể phục hồi lại tất cả các thay đổi từ file log
III Các vấn đề trong xử lý truy xuất đồng thời
9