Bài giảng Giao tác trong hệ quản trị cơ sở dữ liệu SQL Server 2012

GIAO TÁC TRONG  
HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU  
SQL SERVER 2012  
Giao tác  
(Transaction)  
Giao tác được hiểu như khái niệm chỉ tập các lệnh được thực hiện  
nhưng có sự gắn kết với nhau và được coi như là 1 đơn vị hoạt  
động, chúng chỉ thành công nếu như tất cả thành công và thất bại  
nếu có 1 phần tử thất bại.  
Tính chất của giao tác  
• Tính nguyên tử (Atomicty): Thành công nếu tất cả thành công.  
• Tính nhất quán (Consistency): Vẫn đảm bảo các ràng buộc.  
• Tính cô lập (Isolation): Thể hiện mức độ riêng tư của từng giao  
tác. (Một giao tác đang thay đổi có thể bên ngoài thấy hay không  
thấy)  
• Tính bền vững (Durability): Khi hệ thống có lỗi, nhưng thành  
công của giao tác vẫn được ghi vào dữ liệu.  
Giao tác  
(Transaction)  
Vấn đề đặt ra cho việc dùng giao tác  
oKhi nào sử dụng giao tác ?  
oSử dụng giao tác ở mức độ cô lập nào là phù hợp ?  
oPhạm vi ảnh hưởng của giao tác là đâu ?  
oKhả năng các ngôn ngữ lập trình kết nối với hệ quản trị có  
sử dụng cơ chế giao tác như thế nào ?  
Giao tác tường minh  
(Explicit)  
Giao tác  
Begin tran [tên_giao_tác]  
lệnh | khối_lệnh  
{ Commit tran | Rollback tran } [tên_giao_tác]  
Tạo điểm lưu  
save tran tên_điểm_lưu  
Hủy những gì sau điểm lưu nếu rollback  
Giao tác – Điểm lưu  
(Save point)  
begin tran t1  
lệnh | khối_lệnh  
save tran s1  
lệnh | khối_lệnh  
rollback tran s1  
-- chưa chấm dứt t1  
lệnh | khối_lệnh  
commit tran t1  
=> Rollback tran s1chỉ hủy bỏ kết quả từ sau lệnh save  
tran s1đến chổ rollback tran s1 và sau đó là tiếp tục làm  
tiếp (giao tác t1 vẫn còn).  
Hành vi đọc dữ liệu với giao tác  
• Dirty read  
Đọc dữ liệu mà giao tác khác chưa commit.  
• Non repeatable read (Non Rep | Lost Update)  
Giao tác đọc lần đầu thấy dữ liệu là A, nhưng sau đó  
đọc lại thì thấy là B (do giao tác khác thay đổi)  
• Phantom read  
Khi giao tác 1 đọc dữ liệu, bên ngoài hay giao tác khác  
thêm dòng mới vào hay xóa đi, làm cho các dòng đang  
đọc trở thành dòng ảo (phantom).  
Mức độ cô lập trong giao tác  
(Isolation level)  
ISOLATION LEVEL DIRTY  
NON PHANTOM  
READ REPEATED READ  
Read uncommitted  
Read committed  
Repeatable read  
Serializable  
√
√
√
√
√
√
Mức độ cô lập trong giao tác  
(Isolation level)  
Thiết lập mức độ  
SET TRANSACTION ISOLATION LEVEL  
{ read uncommitted|  
read committed |  
repeatable read |  
serializable  
}
BEGIN TRAN ……  
Giao tác không tường minh  
(Implicit)  
Bắt đầu giao tác với các lệnh  
ALTER TABLE, DROP, TRUNCATE TABLE,  
CREATE, OPEN, FETCH, REVOKE, GRANT  
DELETE, INSERT, SELECT, UPDATE  
Kết thúc bằng lệnh : COMMIT | ROLLBACK TRAN  
Khi kết thúc cũng là lúc bắt đầu một giao tác mới.  
Thiết lập thông số chấp nhận  
SET IMPLICIT_TRANSACTIONS ON|OFF  
Giao tác tự động  
Cơ chế tự động xác nhận được thực thi khi trong giao  
tác xuất hiện lỗi lúc chạy hay lỗi cú pháp.  
• Lỗi cú pháp: giao tác bị hủy (rollback)  
• Lỗi lúc chạy (khóa chính, sai dữ liệu,…): giao  
tác được chấp nhận đến thời điểm bị lỗi.  
Giao tác lồng nhau  
• Cho phép các giao tác lồng với nhau.  
• Lệnh commit chỉ có tác dụng cho giao tác cấp ‘con’  
gần nhất.  
• Lệnh rollback tran có tác dụng hủy tất cả và trở về  
điểm ban đầu của giao tác cấp ‘cha’ nhất.  
• Biến @@trancount chỉ xem vào thời điểm hiện tại có  
bao nhiêu giao tác đang tồn tại.  
Giao tác lồng nhau  
Begin tran t1  
………  
begin tran t2  
…………  
print @@trancount -- @@trancount là 2  
commit tran t2  
………  
print @@trancount -- @@trancount là 1  
commit tran t1  
pptx 12 trang yennguyen 20080 Free
Bạn đang xem tài liệu "Bài giảng Giao tác trong hệ quản trị cơ sở dữ liệu SQL Server 2012", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pptxbai_giang_giao_tac_trong_he_quan_tri_co_so_du_lieu_sql_serve.pptx