11
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
/>22
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
/>Thực thi các hoạt động xử lý theo
quan điểm giao tác (Transaction)
1.Giao tác là gì?
2.Xử lý đối với Local Transaction
3.Xử lý đối với Distributed Transaction
4.Các cấp độ cô lập (Isolation Level)
33
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
/>1. Giao tác là gì?
•
Giao tác được xem như một công việc (không
thể phân chia thêm nữa)
•
Giao tác được xem là thành công khi tất cả
các thao tác thực hiện thành công
•
Giao tác được xem là thất bại khi chỉ cần một
thao tác thất bại
•
.NET Framework hỗ trợ các loại giao tác
−
Local Transaction
−
Distributed Transaction
44
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
/>1. Giao tác là gì?
•
Các tính chất ACID của giao tác
−
Atomicity: tính không thể phân chia
−
Consistency: tính nhất quán
−
Isolation: tính cô lập
−
Durability: tính bền vững
55
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
/>2. Xử lý đối với Local Transaction
•
B1: Mở Connection
•
B2: Bắt đầu một Transaction
•
B3: Tạo Command hoạt động trong
Transaction
•
B4: Thực hiện Command
•
B5: Chấm dứt Transaction với
Commit/Rollback
66
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
/>Các Transaction trong .NET
•
System.Data.SqlClient.SqlTransaction
•
System.Data.OleDbClient.OleDbTransaction
•
System.Data.Odbc.OdbcTransaction
•
System.Data.OracleClient.OracleTransaction
77
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
/>3. Xử lý với Distributed Transaction
•
B1: Tạo đối tượng TransactionScope
•
B2: Mở các Connection
•
B3: Tạo và thực hiện các Command
•
B4: Nếu thực hiện thành công các Command
thì đánh dấu Transaction là Complete
•
B5: Giải phóng đối tượng TransactionScope
88
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
/>4. Các cấp độ cô lập
•
Khi tạo Transaction có thể xác định cấp độ cô
lập để xác lập ảnh hưởng giữa các Transaction
•
Các Transaction cùng truy xuất dữ liệu giống
nhau tại cùng thời điểm có thể gây ra các lỗi
•
Dirty read: đọc dữ liệu chưa được Commit
•
Non-repeatable read: đọc không nhất quán
•
Phantom read: đọc không bình thường
99
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
/>Lỗi Dirty read
•
Transaction thứ nhất (T1) đang cập nhật
nhưng chưa Commit
•
T2 có thể đọc thấy dữ liệu chưa được Commit
của T1
1010
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
/>Lỗi Non-repeatable read
•
T1 đang đọc dữ liệu đã được Commit
•
T2 có thể cập nhật dữ liệu này
•
T1 đọc lại và thấy có sự thay đổi
1111
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
/>Lỗi Phantom read
•
T1 đang đọc dữ liệu đã được Commit và dữ
liệu được đọc theo các điều kiện
•
T2 có thể cập nhật dữ liệu liên quan đến các
điều kiện
•
T1 đọc lại và thấy có sự thay đổi
1212
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
/>IsolationLevel của Transaction
•
ReadUncommited
•
ReadCommited (cấp độ mặc định)
•
RepeatableRead
•
Serializable
1313
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
/>Isolation Levels
1414
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
/>Minh họa Isolation Level
•
Cấp độ ReadUnCommited
1515
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
/>Thực hành
•
Thực hiện các thao tác cập nhật trong cùng
một giao tác