Tải bản đầy đủ (.pdf) (17 trang)

bài giảng truy vấn cơ sở dữ liệu Session 03

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (210.98 KB, 17 trang )

Bài 3
Transaction và Lock


Nhắc lại
Nhắc lại kiến thức lập trình với T-SQL:
n Khái niệm về bó lệnh (Batch) và tiến trình xử
lý Batch
n Biến
n Các hàm cơ bản của SQL Server

Thiết kế CSDL và thực thi với SQL Server / Bài 3 / 2 trong 17


Mục tiêu
n
n

n

n

n

Nắm được khái niệm giao dịch (transaction)
Nắm được các khái niệm về thuộc tính, phân loại,
tính riêng biệt và mức độ riêng biệt của giao dịch
Sử dụng các khái niệm về transaction để thực thi
giao dịch SQL Transaction và tập lệnh (batch)
Nắm được các khái niệm khóa (lock) và khóa chết
(deadlock)


Giải quyết các deadlock bằng cách đặt mức độ ưu
tiên cho các transaction

Thiết kế CSDL và thực thi với SQL Server / Bài 3 / 3 trong 17


Giới thiệu
n

n

Giao dịch (Transaction) là một đơn vị công
việc
Một transaction hoặc là sẽ thực hiện thành
công hoàn toàn hoặc là sẽ không thay đổi
một chút dữ liệu nào

Thiết kế CSDL và thực thi với SQL Server / Bài 3 / 4 trong 17


Các thuộc tính Transaction
n
n
n
n

Tính hoàn chỉnh (Atomicity)
Tính nhất quán (Consistency)
Tính riêng biệt (Isolation)
Tín bền vững (Durability)


Thiết kế CSDL và thực thi với SQL Server / Bài 3 / 5 trong 17


Phân loại Transaction
n
n
n

Giao dịch tường minh (Explicit transaction)
Giao dịch ngầm định (Implicit transaction)
Giao dịch xác nhận (Commit transaction)

Thiết kế CSDL và thực thi với SQL Server / Bài 3 / 6 trong 17


Transaction Isolation và
Isolation Levels
n
n
n
n

Read Uncommitted
Read Committed
Repeatable read
Serializable

Thiết kế CSDL và thực thi với SQL Server / Bài 3 / 7 trong 17



Sử dụng Transaction Log
n

n

n
n

Nhật ký giao dịch (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ý (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

Thiết kế CSDL và thực thi với SQL Server / Bài 3 / 8 trong 17


Transaction với T-SQL
n
n
n
n

BEGIN TRANSACTION
COMMIT TRANSACTION

ROLLBACK TRANSACTION
SAVE TRANSACTION

Thiết kế CSDL và thực thi với SQL Server / Bài 3 / 9 trong 17


Locks
n

n

n

n

Khóa (Lock) được sinh ra để giới hạn quyền truy
nhập trên môi trường đa người dùng
Microsoft SQL Server 2000 sử dụng lock để đảm bảo
tính toàn vẹn của transaction và tính thống nhất của
database
Nếu lock không được sử dụng, dữ liệu bên trong
CSDL có thể bị sai về logíc, và các query chạy trên đó
sẽ đưa ra các kết quả không mong đợi
Bản chất của lock là việc một người muốn truy nhập
riêng vào một bảng, vì vậy server sẽ lock bảng đó lại
cho riêng người đó
Thiết kế CSDL và thực thi với SQL Server / Bài 3 / 10 trong 17


Phân loại các Locks trong

SQL Server
n
n
n
n
n

Pessimistic Lock
Optimistic Lock
Shared Locks
Exclusive Locks
Update Locks

Thiết kế CSDL và thực thi với SQL Server / Bài 3 / 11 trong 17


Deadlock
n

n

n

Một deadlock xảy ra khi có 2 người dùng (hoặc 2 phiên làm
việc) đã đặt khóa trên 2 đối tượng riêng, và mỗi user muốn đặt
khóa trên đối tượng của user kia. Mỗi user đều phài đợi người
kia giải phóng khóa của họ ra để mình có thể đặt khóa.
SQL Server tự động nhận ra deadlock và giải quyết bằng cách
chọn một ứng dụng và bắt nó phải giải phóng khóa, trong khi
đó vẫn cho ứng dụng còn lại chạy tiếp.

Cách tốt nhất để tránh deadlock là tránh nó. Một cách để tránh
nó là không chạy các transaction đồng thời.

Thiết kế CSDL và thực thi với SQL Server / Bài 3 / 12 trong 17


Giải quyết Deadlock
n
n

SET DEADLOCK_PRIORITY
SET LOCK_TIMEOUT

Thiết kế CSDL và thực thi với SQL Server / Bài 3 / 13 trong 17


Tóm tắt
n

n

n

n

Quá trình truy nhập và thay đổi nội dung CSDL được gọi là giao
dịch (transaction)
Một transaction có thể thao tác cả đọc lẫn ghi. Khi transaction
được thực hiện bởi nhiều user có thể sẽ chạy đồng thời và truy
nhập lẫn các đối tượng của CSDL.

Các thuộc tính của Transaction là:
n Atomicity
n Consistency
n Isolation
n Durability
Các thuộc tính trên còn được gọi là thuộc tính ACID

Thiết kế CSDL và thực thi với SQL Server / Bài 3 / 14 trong 17


Tóm tắt (tiếp)…
n

n

Các transaction có thể phân loại như sau:
n Explicit transaction
n Implicit transaction
n Commit transaction
Chuẩn ANSI SQL quy định 4 mức độ chạy riêng biệt của
transaction. Các mức độ này chỉ ra cách chạy transaction với
mức độ riêng biệt của dữ liệu. Các mức độ như sau:
n Read Uncommitted
n Read Committed
n Repeatable read
n Serializable

Thiết kế CSDL và thực thi với SQL Server / Bài 3 / 15 trong 17



Tóm tắt (tiếp)…
n

n

n

Transaction log là một phần quan trọng để bảo vệ dữ liẹu. Bằng
cách ghi lại vết các thao tác trong log, database server dễ dàng
khôi phục lại dữ liệu khi gặp sự cố.
Transact-SQL sử dụng các câu lệnh sau để quản lý transaction:
n BEGIN TRANSACTION
n COMMIT TRANSACTION
n ROLLBACK TRANSACTION
n SAVE TRANSACTION
Lock được sử dụng để giới hạn truy nhập dữ liệu trong môi
trường đa người dùng. SQL Server tự động lock các tài nguyên
record, field, hoặc file, để ngăn cản các thao tác đồng thời trên
dữ liệu.
Thiết kế CSDL và thực thi với SQL Server / Bài 3 / 16 trong 17


Tóm tắt (tiếp)…
n

n

Các kiểu của Lock:
n Pessimistic Locks
n Optimistic locks

n Shared Locks
n Exclusive Locks
n Update Locks
Deadlock xẩy ra khi có 2 user (hoặc 2 phiên làm việc)
đã lock 2 đối tượng riêng, và mỗi user muốn lock đối
tượng của user kia. Mỗi user đều phải đợi người kia
giải phóng lock của họ ra để mình có thể lock.

Thiết kế CSDL và thực thi với SQL Server / Bài 3 / 17 trong 17



×