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

Bài 3 Transaction và Lock doc

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 (220.75 KB, 17 trang )


Bài 3
Transaction và Lock
Thiết kế CSDL và thực thi với
SQL Server / Bài 3 / 2 trong 17
Nhắc lại
Nhắc lại kiến thức lập trình với T-SQL:

Khái niệm về bó lệnh (Batch) và tiến trình xử
lý Batch

Biế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 / 3 trong 17
Mục tiêu

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 / 4 trong 17
Giới thiệu

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

Giao dịch (Transaction) là một đơn vị công
việc
Thiết kế CSDL và thực thi với
SQL Server / Bài 3 / 5 trong 17
Các thuộc tính Transaction

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 / 6 trong 17
Phân loại Transaction

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 / 7 trong 17
Transaction Isolation và
Isolation Levels

Read Uncommitted

Read Committed

Repeatable read

Serializable
Thiết kế CSDL và thực thi với
SQL Server / Bài 3 / 8 trong 17
Sử dụng Transaction Log

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 / 9 trong 17

Transaction với T-SQL

BEGIN TRANSACTION

COMMIT TRANSACTION

ROLLBACK TRANSACTION

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

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 / 11 trong

17
Phân loại các Locks trong
SQL Server

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 / 12 trong
17
Deadlock

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 / 13 trong
17
Giải quyết Deadlock

SET DEADLOCK_PRIORITY

SET LOCK_TIMEOUT
Thiết kế CSDL và thực thi với
SQL Server / Bài 3 / 14 trong
17
Tóm tắt

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à:

Atomicity

Consistency

Isolation

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 / 15 trong
17
Tóm tắt (tiếp)…

Các transaction có thể phân loại như sau:

Explicit transaction

Implicit transaction

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:

Read Uncommitted

Read Committed

Repeatable read

Serializable
Thiết kế CSDL và thực thi với
SQL Server / Bài 3 / 16 trong
17
Tóm tắt (tiếp)…


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:

BEGIN TRANSACTION

COMMIT TRANSACTION

ROLLBACK TRANSACTION

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 / 17 trong
17
Tóm tắt (tiếp)…

Các kiểu của Lock:

Pessimistic Locks

Optimistic locks

Shared Locks


Exclusive Locks

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.

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×