Download as pdf or txt
Download as pdf or txt
You are on page 1of 26

Machine Translated by Google

Hệ thống Quản lý Dữ liệu


Đồng thời kiểm soát

Nguyễn Hải Châu


Email: chaunh@vnu.edu.vn

Đại học Kỹ thuật và Công nghệ


Đại học Quốc gia Việt Nam

NH Châu (ĐHĐT, ĐHQGHN) DBMS: Kiểm soát đồng thời 1/26


Machine Translated by Google

Xử lý xen kẽ và song song

NH Châu (ĐHĐT, ĐHQGHN) DBMS: Kiểm soát đồng thời 26/2


Machine Translated by Google

Giới thiệu giao dịch

Hầu hết các DBMS đều có nhiều người dùng: Nhiều người dùng và chương trình

truy cập đồng thời vào một cơ sở dữ liệu

Tính đồng thời của cơ sở dữ liệu được giả định trên các hệ thống máy

tính chia sẻ thời gian (hoặc xen kẽ)

Giao dịch: tập hợp các hoạt động truy cập cơ sở dữ liệu tạo
thành một đơn vị logic xử lý

cơ sở dữ liệu: bắt đầu


hoạt động giao
dịch 1 hoạt động 2

kết thúc giao dịch

NH Châu (ĐHĐT, ĐHQGHN) DBMS: Kiểm soát đồng thời 3/26


Machine Translated by Google

Mô hình cơ sở dữ liệu đơn giản hóa

Cơ sở dữ liệu = tập hợp các mục dữ liệu được đặt tên

Mỗi mục có một tên duy nhất

Các thao tác truy cập cơ sở dữ liệu cơ bản:

read_item(X): đọc một mục cơ sở dữ liệu có tên X vào chương trình


Biến X

write_item(X): ghi giá trị của biến chương trình X vào mục cơ sở dữ liệu có
tên X

NH Châu (ĐHĐT, ĐHQGHN) DBMS: Kiểm soát đồng thời 26/4


Machine Translated by Google

Ví dụ về giao dịch

Giao dịch T1 và T2 truy cập vào cùng một mục dữ liệu có tên X

NH Châu (ĐHĐT, ĐHQGHN) DBMS: Kiểm soát đồng thời 5/26


Machine Translated by Google

Xử lý giao dịch

NH Châu (ĐHĐT, ĐHQGHN) DBMS: Kiểm soát đồng thời 6/26


Machine Translated by Google

Tại sao cần kiểm soát đồng thời

Ví dụ về các vấn đề có thể xảy ra khi truy cập đồng thời vào cơ sở dữ
liệu (truy cập đồng thời vào cùng một mục dữ liệu):

Vấn đề cập nhật bị mất

Sự cố cập nhật tạm thời (hoặc đọc sai)

Vấn đề tóm tắt không chính xác

Vấn đề đọc không thể lặp lại, v.v.

NH Châu (ĐHĐT, ĐHQGHN) DBMS: Kiểm soát đồng thời 26/7


Machine Translated by Google

Vấn đề cập nhật bị mất

NH Châu (ĐHĐT, ĐHQGHN) DBMS: Kiểm soát đồng thời 26/8


Machine Translated by Google

Sự cố cập nhật tạm thời (đọc bẩn)

NH Châu (ĐHĐT, ĐHQGHN) DBMS: Kiểm soát đồng thời 26/9


Machine Translated by Google

Vấn đề tóm tắt không chính xác

NH Châu (ĐHĐT, ĐHQGHN) DBMS: Kiểm soát đồng thời 26/10


Machine Translated by Google

Vấn đề đọc không thể lặp lại

Đọc không thể lặp lại là khi một giao dịch T đọc cùng một mục

hai lần và mục được thay đổi bởi một giao dịch khác T'
giữa hai lần đọc

Do đó, T nhận được các giá trị khác nhau cho hai lần đọc giống nhau
mục

NH Châu (ĐHĐT, ĐHQGHN) DBMS: Kiểm soát đồng thời 26/11


Machine Translated by Google

Hoạt động giao dịch và


của cải

NH Châu (ĐHĐT, ĐHQGHN) DBMS: Kiểm soát đồng thời 26/12


Machine Translated by Google

Trạng thái giao dịch và hoạt động

NH Châu (ĐHĐT, ĐHQGHN) DBMS: Kiểm soát đồng thời 13/26


Machine Translated by Google

Thuộc tính ACID của giao dịch

Nguyên tử: Tất cả hoặc không có hoạt động nào trong giao dịch

được thực hiện

Tính nhất quán: nếu một giao dịch được thực hiện hoàn toàn từ đầu

đến cuối mà không có sự can thiệp từ các giao dịch khác thì nó sẽ đưa cơ sở
dữ liệu từ trạng thái nhất quán này sang trạng thái nhất quán khác

Cô lập: việc thực hiện một giao dịch không bị can thiệp bởi bất kỳ giao

dịch nào khác đang thực hiện đồng thời

Độ bền hoặc tính lâu dài: Những thay đổi được áp dụng cho cơ sở dữ liệu

bởi một giao dịch đã cam kết phải tồn tại trong cơ sở dữ liệu

NH Châu (ĐHĐT, ĐHQGHN) DBMS: Kiểm soát đồng thời 14/26


Machine Translated by Google

Thuộc tính ACID của giao dịch

Atomic: trách nhiệm của hệ thống con phục hồi giao dịch của một
DBMS để đảm bảo

Tính nhất quán: trách nhiệm của người lập trình


Trạng thái nhất quán của cơ sở dữ liệu thỏa mãn các ràng buộc được chỉ định

trong lược đồ cũng như mọi ràng buộc khác trên cơ sở dữ liệu

Chương trình cơ sở dữ liệu phải đảm bảo trạng thái nhất quán của cơ sở

dữ liệu, với giả định không có sự can thiệp của các giao dịch khác

Sự cô lập được thực thi bởi hệ thống con kiểm soát đồng thời của
cơ sở dữ liệu

Độ bền được thực thi bởi hệ thống con phục hồi của DBMS

NH Châu (ĐHĐT, ĐHQGHN) DBMS: Kiểm soát đồng thời 15/26


Machine Translated by Google

Mức độ cô lập của giao dịch

Cấp 0: Một giao dịch được cho là có mức cách ly cấp 0 (không) nếu nó
không ghi đè lên các lần đọc bẩn của các giao dịch cấp cao hơn

Cách ly cấp 1 không bị mất bản cập nhật

Cách ly cấp 2 không bị mất cập nhật và không đọc sai

Cấp 3, ngoài các thuộc tính cấp 2, còn có các lần đọc lặp lại

Một loại cách ly khác được gọi là cách ly ảnh chụp nhanh và một số
phương pháp kiểm soát đồng thời thực tế dựa trên điều này.

NH Châu (ĐHĐT, ĐHQGHN) DBMS: Kiểm soát đồng thời 16/26


Machine Translated by Google

Mức độ cô lập giao dịch SQL

NH Châu (ĐHĐT, ĐHQGHN) DBMS: Kiểm soát đồng thời 17/26


Machine Translated by Google

Đã giải thích loại vi phạm SQL

Đọc bẩn. Giao dịch T1 có thể đọc bản cập nhật của giao dịch T2 chưa

được xác nhận. Nếu T2 thất bại và bị hủy bỏ thì T1 sẽ đọc một giá trị không

tồn tại và không chính xác.

Đọc không thể lặp lại. Giao dịch T1 có thể đọc một giá trị nhất định từ một

bảng. Nếu sau đó một giao dịch khác T2 cập nhật giá trị đó và T1 đọc lại giá

trị đó thì T1 sẽ thấy giá trị Phantoms khác. Giao dịch T1 có thể đọc một

tập hợp các hàng từ bảng T dựa trên mệnh đề WHERE của SQL. Giao dịch T2

chèn một hàng r mới cũng thỏa mãn điều kiện mệnh đề WHERE vào T. Bản ghi r được

gọi là bản ghi ảo vì nó không có ở đó khi T1 bắt đầu nhưng vẫn ở đó khi T1 kết

thúc

NH Châu (ĐHĐT, ĐHQGHN) DBMS: Kiểm soát đồng thời 18 / 26


Machine Translated by Google

Mức độ cô lập giao dịch PostgreSQL

NH Châu (ĐHĐT, ĐHQGHN) DBMS: Kiểm soát đồng thời 19 / 26


Machine Translated by Google

Đã giải thích loại vi phạm PostgreSQL

đọc bẩn: Một giao dịch đọc dữ liệu được ghi bởi một giao dịch không được
cam kết đồng thời

đọc không thể lặp lại: Một giao dịch đọc lại dữ liệu mà nó đã đọc trước đó và

phát hiện ra rằng dữ liệu đã được sửa đổi bởi một giao dịch khác

(đã được cam kết kể từ lần đọc đầu tiên) đọc ảo: Một giao dịch

thực hiện lại một truy vấn trả về một tập hợp các hàng thỏa mãn tìm kiếm điều

kiện và nhận thấy rằng tập hợp các hàng thỏa mãn điều kiện đã thay đổi do một

sự bất thường khác về tuần tự hóa giao dịch được cam kết gần đây: Kết

quả của việc thực hiện thành công một

nhóm giao dịch không nhất quán với tất cả các thứ tự có thể có của việc chạy

từng giao dịch đó cùng một lúc

NH Châu (ĐHĐT, ĐHQGHN) DBMS: Kiểm soát đồng thời 20/26


Machine Translated by Google

Giao dịch trong PostgreSQL

BẮT ĐẦU GIAO DỊCH [ chế độ giao dịch [,…]] trong đó chế độ giao dịch là một

trong: MỨC ĐỘ ĐỘC LẬP SERIALIZABLE | ĐỌC LẶP LẠI | ĐỌC CAM KẾT |

ĐỌC KHÔNG CAM KẾT ĐỌC VIẾT | CHỈ ĐỌC BẮT ĐẦU hoặc BEGIN GIAO DỊCH có thể được sử dụng

Để kết thúc một giao dịch:

LÀM
HOÀN LẠI

THIẾT LẬP MỨC ĐỘ Cô lập GIAO DỊCH…

HIỂN THỊ MỨC ĐỘ Cô lập GIAO DỊCH…

NH Châu (ĐHĐT, ĐHQGHN) DBMS: Kiểm soát đồng thời 21/26


Machine Translated by Google

ĐIỂM LƯU

SAVEPOINT – xác định một điểm lưu trữ mới trong phạm vi hiện tại
giao dịch, cú pháp:

SAVEPOINT tên điểm lưu trữ

HOÀN LẠI [Giao dịch] về [SAVEPOINT]


tên_điểm lưu

NH Châu (ĐHĐT, ĐHQGHN) DBMS: Kiểm soát đồng thời 22 / 26


Machine Translated by Google

Mức cô lập đã cam kết đọc của PostgreSQL

Đã cam kết đọc là mức cô lập mặc định trong PostgreSQL

Ở mức độ cô lập này:

truy vấn SELECT (không có mệnh đề FOR UPDATE/SHARE) chỉ thấy dữ liệu đã được

cam kết trước khi truy vấn bắt đầu, nó không bao giờ thấy dữ liệu
chưa được cam kết

CẬP NHẬT, XÓA, CHỌN ĐỂ CẬP NHẬT và CHỌN


Các lệnh FOR SHARE hoạt động giống như SELECT về mặt tìm kiếm các hàng mục

tiêu: chúng sẽ chỉ tìm thấy các hàng mục tiêu đã được cam kết kể từ thời điểm
bắt đầu lệnh

NH Châu (ĐHĐT, ĐHQGHN) DBMS: Kiểm soát đồng thời 23 / 26


Machine Translated by Google

Mức độ cách ly đọc lặp lại của PostgreSQL

Mức cách ly Đọc lặp lại chỉ xem dữ liệu đã được cam kết trước khi giao dịch

bắt đầu; nó không bao giờ nhìn thấy dữ liệu không được cam kết hoặc các thay

đổi được cam kết trong quá trình thực hiện giao dịch bởi các giao dịch
đồng thời khác

CẬP NHẬT, XÓA, CHỌN ĐỂ CẬP NHẬT và CHỌN

Các lệnh FOR SHARE hoạt động giống như SELECT về mặt tìm kiếm các hàng mục

tiêu: chúng sẽ chỉ tìm thấy các hàng mục tiêu đã được cam kết kể từ thời điểm
bắt đầu giao dịch

Các ứng dụng sử dụng cấp độ này phải được chuẩn bị để thử lại các
giao dịch do lỗi tuần tự hóa:

LỖI: không thể tuần tự hóa quyền truy cập do cập nhật đồng thời

NH Châu (ĐHĐT, ĐHQGHN) DBMS: Kiểm soát đồng thời 24/26


Machine Translated by Google

Mức cô lập có thể tuần tự hóa của PostgreSQL

Mức cách ly có thể tuần tự hóa cung cấp sự cách ly giao dịch nghiêm ngặt nhất

Cấp độ này mô phỏng việc thực hiện giao dịch nối tiếp cho tất cả

các giao dịch đã cam kết; như thể các giao dịch đã được thực hiện lần lượt

từng giao dịch một chứ không phải đồng thời

Các ứng dụng sử dụng cấp độ này phải được chuẩn bị để thử lại các
giao dịch do lỗi tuần tự hóa

NH Châu (ĐHĐT, ĐHQGHN) DBMS: Kiểm soát đồng thời 25 / 26


Machine Translated by Google

Khóa rõ ràng

PostgreSQL cung cấp công cụ khóa cho người dùng: khóa rõ ràng

Khóa cấp bảng

Khóa cấp hàng

Khóa tư vấn (khóa cấp ứng dụng), tương tự như semaphores

Việc sử dụng khóa rõ ràng có thể làm tăng khả năng xảy ra bế tắc

Bế tắc có thể xảy ra trong khóa rõ ràng ở cấp độ bảng hoặc cấp độ hàng

Trách nhiệm của các ứng dụng là tránh bế tắc

NH Châu (ĐHĐT, ĐHQGHN) DBMS: Kiểm soát đồng thời 26 / 26

You might also like