Chương VI: Giao Tác Trong Cơ Sở Dữ Liệu

Khám phá chuong vi transaction, một khái niệm quan trọng trong lĩnh vực tài chính và giao dịch, giúp tối ưu hóa hiệu quả kinh doanh.

Chuyên ngành

Cơ Sở Dữ Liệu

Người đăng

Ẩn danh

Thể loại

Bài Giảng

2023

53
0
0

Phí lưu trữ

30 Point

Mục lục chi tiết

6. CHƯƠNG VI: GIAO TÁC

6.1. Nội dung trình bày

6.2. Giao tác (Transac.on)

6.3. Giao tác (transaction) - Ví dụ chuyển khoản

6.4. Giao tác (transac7on) - Ví dụ sự cố kỹ thuật

6.5. Giao tác (transaction) - Các tính chất: Tính nguyên tố, Tính nhất quán

6.6. Giao tác (transac7on) - Các tính chất: Tính cô lập, Tính vững bền

6.7. Giao tác (transaction) - Các tính chất ACID

6.8. Giao tác (transac7on) - Các sự kiện của một giao tác

6.9. Nội dung trình bày

6.10. Xử lý đồng thời (Concurrency) - Mô hình ứng dụng

6.11. Xử lý đồng thời (Concurrency) - Xung đột, tranh chấp

6.12. Xử lý đồng thời (Concurrency) - Bản chất và vấn đề xử lý

6.13. Xử lý đồng thời (Concurrency) - Mất dữ liệu cập nhật (Lost update)

6.14. Xử lý đồng thời (Concurrency) - Đọc dữ liệu rác (Dirty read)

6.15. Xử lý đồng thời (Concurrency) - Không thể đọc lại (Unrepeatable read)

6.16. Xử lý đồng thời (Concurrency) - Bóng ma (Phantom)

6.17. Nội dung trình bày

6.18. Chế độ khóa - Mục đích và cách thức

6.19. Chế độ khóa - Các loại khóa

6.20. Chế độ khóa - Bảng tương thích giữa các chế độ khóa

6.21. Chế độ khóa - Hiện tượng chờ đợi lẫn nhau

6.22. Nội dung trình bày

6.23. Khai báo tường minh giao tác - Khái quát

6.24. Khai báo tường minh giao tác - Các chỉ thị

6.25. Khai báo tường minh giao tác - Kiểm lỗi trong giao tác

6.26. Khai báo tường minh giao tác - Kiểm lỗi trong giao tác (tiếp)

6.27. Khai báo tường minh giao tác - Ví dụ kiểm lỗi

6.28. Khai báo tường minh giao tác - Ví dụ đoạn mã 1

6.29. Khai báo tường minh giao tác - Ví dụ đoạn mã 2

6.30. Khai báo tường minh giao tác - Ví dụ đoạn mã 3

6.31. Nội dung trình bày

6.32. Mức cô lập cho giao tác - Khái niệm

6.33. Mức cô lập cho giao tác - Khái niệm (tiếp)

6.34. Mức cô lập cho giao tác - Bốn mức cô lập SQL Server cung cấp (phần 1)

6.35. Mức cô lập cho giao tác - Bốn mức cô lập SQL Server cung cấp (phần 2)

6.36. Mức cô lập cho giao tác - Bốn mức cô lập SQL Server cung cấp (phần 3)

6.37. Mức cô lập cho giao tác - Thiết lập lệnh

6.38. Mức cô lập cho giao tác

6.39. Nội dung trình bày

6.40. Các cấp độ khóa - Đặt vấn đề

6.41. Các cấp độ khóa - Khái niệm

6.42. Các cấp độ khóa - Các cấp độ khóa

6.43. Các cấp độ khóa - Cách thiết lập

6.44. Các cấp độ khóa - Phối hợp với Isola.on Level

6.45. Các cấp độ khóa - Khóa với dữ liệu trong cursor

6.46. Nội dung trình bày

6.47. Dead lock - Khái niệm

6.48. Dead lock - Phân loại

6.49. Dead lock - Phân loại (tiếp)

6.50. Dead lock - Ví dụ Cyclic Deadlock

Tóm tắt

I. Tổng Quan Về Giao Tác Trong Cơ Sở Dữ Liệu

Giao tác trong cơ sở dữ liệu là một khái niệm quan trọng, giúp đảm bảo tính toàn vẹn và nhất quán của dữ liệu. Giao tác được định nghĩa là một đơn vị công việc nguyên tố, trong đó các thao tác phải được thực hiện hoàn toàn hoặc không thực hiện gì cả. Điều này có nghĩa là nếu một phần của giao tác thất bại, toàn bộ giao tác sẽ bị hủy bỏ. Khái niệm này rất quan trọng trong việc quản lý dữ liệu và xử lý thông tin.

1.1. Khái Niệm Giao Tác Trong Cơ Sở Dữ Liệu

Giao tác (transaction) là một chuỗi các thao tác trên cơ sở dữ liệu, được thực hiện như một đơn vị duy nhất. Ví dụ, chuyển khoản giữa các tài khoản ngân hàng là một giao tác, trong đó tất cả các bước phải hoàn thành để đảm bảo tính chính xác.

1.2. Tính Chất Của Giao Tác

Các giao tác phải đáp ứng bốn tính chất chính: Tính nguyên tố (Atomicity), Tính nhất quán (Consistency), Tính cô lập (Isolation), và Tính vững bền (Durability), thường được gọi là ACID. Những tính chất này đảm bảo rằng dữ liệu luôn ở trạng thái hợp lệ.

II. Vấn Đề Trong Xử Lý Đồng Thời Giao Tác

Xử lý đồng thời là một thách thức lớn trong quản lý cơ sở dữ liệu, đặc biệt khi nhiều giao tác diễn ra cùng lúc. Các vấn đề như mất dữ liệu cập nhật, đọc dữ liệu rác, và hiện tượng bóng ma có thể xảy ra, gây ra sự không nhất quán trong dữ liệu. Việc hiểu rõ các vấn đề này là cần thiết để phát triển các giải pháp hiệu quả.

2.1. Mất Dữ Liệu Cập Nhật

Mất dữ liệu cập nhật xảy ra khi hai giao tác đồng thời thực hiện cập nhật trên cùng một dữ liệu mà không có cơ chế đồng bộ hóa. Điều này có thể dẫn đến việc một trong các cập nhật bị ghi đè và mất đi.

2.2. Đọc Dữ Liệu Rác

Đọc dữ liệu rác xảy ra khi một giao tác đọc dữ liệu mà giao tác khác chưa hoàn tất. Điều này có thể dẫn đến việc dữ liệu không chính xác được sử dụng trong các quyết định.

III. Phương Pháp Xử Lý Đồng Thời Giao Tác Hiệu Quả

Để xử lý đồng thời giao tác một cách hiệu quả, các phương pháp như khóa dữ liệu và mức cô lập được áp dụng. Khóa dữ liệu giúp ngăn chặn các giao tác khác truy cập vào dữ liệu đang được xử lý, trong khi mức cô lập xác định cách mà các giao tác tương tác với nhau.

3.1. Khóa Dữ Liệu Trong Giao Tác

Khóa dữ liệu là một cơ chế quan trọng để đảm bảo rằng các giao tác không xung đột với nhau. Có nhiều loại khóa như khóa chia sẻ, khóa độc quyền, và khóa dự định ghi, mỗi loại có chức năng và ứng dụng riêng.

3.2. Mức Cô Lập Trong Giao Tác

Mức cô lập xác định cách mà một giao tác có thể nhìn thấy dữ liệu của giao tác khác. Các mức cô lập như Read Uncommitted, Read Committed, Repeatable Read, và Serializable giúp điều chỉnh mức độ bảo vệ dữ liệu trong các giao tác đồng thời.

IV. Ứng Dụng Thực Tiễn Của Giao Tác Trong Cơ Sở Dữ Liệu

Giao tác có nhiều ứng dụng thực tiễn trong các hệ thống quản lý cơ sở dữ liệu. Từ ngân hàng đến thương mại điện tử, việc đảm bảo tính toàn vẹn và nhất quán của dữ liệu là rất quan trọng. Các nghiên cứu cho thấy rằng việc áp dụng các phương pháp giao tác hiệu quả có thể cải thiện đáng kể hiệu suất và độ tin cậy của hệ thống.

4.1. Giao Tác Trong Ngân Hàng

Trong ngành ngân hàng, giao tác được sử dụng để đảm bảo rằng các giao dịch tài chính như chuyển khoản và rút tiền được thực hiện một cách an toàn và chính xác. Điều này giúp ngăn chặn các lỗi và gian lận.

4.2. Giao Tác Trong Thương Mại Điện Tử

Trong thương mại điện tử, giao tác giúp quản lý đơn hàng và thanh toán. Việc đảm bảo rằng tất cả các bước trong quy trình mua hàng được thực hiện thành công là rất quan trọng để duy trì sự hài lòng của khách hàng.

V. Kết Luận Về Giao Tác Và Xử Lý Đồng Thời

Giao tác và xử lý đồng thời là hai khía cạnh không thể tách rời trong quản lý cơ sở dữ liệu. Việc hiểu rõ các khái niệm và phương pháp liên quan giúp cải thiện hiệu suất và độ tin cậy của hệ thống. Tương lai của giao tác trong cơ sở dữ liệu sẽ tiếp tục phát triển với sự gia tăng của công nghệ và nhu cầu về dữ liệu.

5.1. Tương Lai Của Giao Tác Trong Cơ Sở Dữ Liệu

Với sự phát triển của công nghệ, giao tác sẽ ngày càng trở nên phức tạp hơn. Các hệ thống mới sẽ cần phải xử lý nhiều giao tác đồng thời mà không làm giảm hiệu suất.

5.2. Tầm Quan Trọng Của Nghiên Cứu Trong Lĩnh Vực Này

Nghiên cứu về giao tác và xử lý đồng thời sẽ tiếp tục đóng vai trò quan trọng trong việc phát triển các giải pháp mới, giúp cải thiện tính toàn vẹn và hiệu suất của cơ sở dữ liệu.

15/07/2025
Chuong vi transaction

Trích đoạn nội dung tài liệu

CHƯƠNG VI: GIAO TÁC GV: TUẤN NGUYÊN HOÀI ĐỨC Email: tnhduc@fit.vn Nội dung trình bày • Giao tác (Transac.on) • Xử lý đồng thời (Concurrency) • Chế độ khóa • Khai báo tường minh giao tác • Mức cô lập • Các cấp độ khóa • Dead-lock Chương VI : Giao tác 2 Giao tác (transac7on) • Khái niệm • Chúng ta xây dựng CSDL là để lưu trữ thông :n và khai thác thông :n. Công việc này gọi chung là xử lý thông :n. • Thực tế tồn tại những bước xử lý thông :n tạo nên một đơn nguyên (atom) : những bước xử lý này hoặc là được thực hiện hết, hoặc là không thực hiện một bước nào. • Những đơn nguyên như vậy gọi là giao tác (transac:on) Chương VI : Giao tác 3 Giao tác (transaction) • Ví dụ : chuyển khoản 100$ từ tài khoản A sang tài khoản B (50$) và tài khoản C (50$).

Các bước thực hiện gồm : • Trừ 100$ khỏi tài khoản A • Nếu số dư trong A < 0 thì khôi phục số dư cũ và ngưng • Nếu số dư trong A >=0 thì • Cộng 50$ vào tài khoản B • Cộng 50$ vào tài khoản C • Nếu số dư trong A = 0 thì tất toán tài khoản A Chương VI : Giao tác 4 Giao tác (transac7on) • Ví dụ : • Giả sử vừa trừ :ền khỏi tài khoản A thì sự cố kỹ thuật sảy ra và các bước :ếp theo không được thực hiện à mất 100$ à Không chấp nhận được • Các bước xử lý nêu trên nếu đã làm thì phải làm cho hết, ngược lại thì không làm bước nào cả à chúng tạo thành một transac:on, nói cách khác là một đơn vị công việc nguyên tố. Chương VI : Giao tác 5 Giao tác (transaction) • Các anh chất : • Tính nguyên tố (Atomic) : Một giao tác là một đơn nguyên (atom), nghĩa là các công việc trong ấy không tách rời nhau được • Tính nhất quán (Consistent) : Một giao tác có thể làm thay đổi wnh trạng CSDL, nhưng không được làm mất xnh nhất quán vốn có của CSDL Chương VI : Giao tác 6 Giao tác (transac7on) • Các anh chất : • Tính cô lập (Isolated) : Công việc của một giao tác không thể bị chi phối hoặc phá hoại bởi các giao tác khác • Tính vững bền (Durable) : Kết quả làm việc của một giao tác phải được lưu trữ bền vững vào CSDL. Chương VI : Giao tác 7 Giao tác (transaction) • Các $nh chất : • Atomic • Consistent • Isolated • Durable ACID Chương VI : Giao tác 8 Giao tác (transac7on) • Các sự kiện của một giao tác • Begin tran : Giao tác bắt đầu • Commit tran : Giao tác hoàn tất thành công • Rollback tran : Giao tác thất bại và bị chấm dứt, mọi thay đổi nó thực hiện trên dữ liệu bị hủy bỏ, dữ liệu khôi phục trạng thái cũ. Không có tác dụng trên biến cục bộ • Save tran (không chính quy) : Ghi nhận bền vững một phần kết quả của giao tác xnh đến thời điểm save tran Chương VI : Giao tác 9 Nội dung trình bày • Giao tác (Transac.on) • Xử lý đồng thời (Concurrency) • Chế độ khóa • Khai báo tường minh giao tác • Mức cô lập • Các cấp độ khóa • Dead-lock Chương VI : Giao tác 10 Xử lý đồng thời (Concurrency) • Mô hình ứng dụng hiện nay là mô hình đa người dùng : Một CSDL lưu tại Server và nhiều clients đồng thời truy cập và thao tác trên cùng CSDL ấy • Một client X có thể thực hiện lần lượt các giao tác Ti của nó, trong khi một client Y có thể cũng đang lần lượt thực hiện các giao tác Tj của nó.

Chương VI : Giao tác 11 Xử lý đồng thời (Concurrency) • Các Ti và Tj đồng thời truy xuất và thay đổi CSDL trên server và có thể xung đột, tranh chấp lẫn nhau. • Việc dàn xếp các xung đột, tranh chấp này sao cho ổn thỏa và bào đảm nhất quán dữ liệu gọi là xử lý đồng thời (concurrency) Chương VI : Giao tác 12 Xử lý đồng thời (Concurrency) • Bản chất của các giao tác đồng thời : Các thao tác của những giao tác được DBMS đáp ứng theo cách mà CPU đáp ứng các lệnh từ các ứng dụng chạy trên một hệ điều hành đa nhiệm. • Các vấn đề xử lý đồng thời : Các giao tác đồng thời sẽ được xem là ổn nếu kết quả của chúng giống như trường hợp làm tuần tự từng giao tác một. Chương VI : Giao tác 13 Xử lý đồng thời (Concurrency) • Các vấn đề xử lý đồng thời • Mất dữ liệu cập nhật (Lost update) T1 T2 1.Read A Dữ liệu 5.a = A*3 cập nhật Ghi đè 6.Commit tran Chương VI : Giao tác 14 Xử lý đồng thời (Concurrency) • Các vấn đề xử lý đồng thời • Đọc dữ liệu rác (Dirty read) T1 T2 1.Rollback tran Vẫn 6.Write A,b Đơn vị dữ liệu A để 8.Commit tran vừa ghi không còn dùng ý nghĩa nữa Chương VI : Giao tác 15 Xử lý đồng thời (Concurrency) • Các vấn đề xử lý đồng thời • Không thể đọc lại (Unrepeatable read) T1 T2 1.Begin tran Đọc 2.Begin tran thấy 3.read A Thao Đọc n+1.Commit tran tác ghi thấy chen a_new ngang à Bất ngờ Chương VI : Giao tác 16 Xử lý đồng thời (Concurrency) • Các vấn đề xử lý đồng thời • Bóng ma (Phantom) T1 T2 1.Begin tran Đọc Thêm 2.Begin tran tập các hoặc 3.read {A [,…n]} đơn vị bớt 4….thay đổi thành phần dữ liệu thành của {A [,…n]} A viên 5.Commit tran …Xử lý {A [,…n]} n+1.Commit tran Xử lý thừa hoặc thiếu Chương VI : Giao tác 17 Nội dung trình bày • Giao tác (Transac.on) • Xử lý đồng thời (Concurrency) • Chế độ khóa • Khai báo tường minh giao tác • Mức cô lập • Các cấp độ khóa • Dead-lock Chương VI : Giao tác 18 Chế độ khóa • Mục đích : Tránh các vần đề về XL đồng thời vừa nêu • Cách thức : Một giao tác T, khi thao tác trên đơn vị dữ liệu A, có thể quy định mức độ quyền hạn của các giao tác T’ khác trên A bằng cách phát khóa trên A.

Chương VI : Giao tác 19 Chế độ khóa • Các loại khóa • Khóa chia sẻ (shared lock) : Còn gọi là khóa đọc (read lock). Gọi tắt : Khóa S • Khóa dự định ghi (Intend to write lock) : Còn gọi là khóa cập nhật (update lock). Gọi tắt : Khóa U • Khóa độc quyền (exclusive lock) : Còn gọi là khóa ghi (write lock). Gọi tắt : Khóa X.

Khóa X luôn được phát ra khi ghi, bất kể thông số hệ thống đang thiết lập thế nào. Chương VI : Giao tác 20 Chế độ khóa • Bảng tương thích giữa các chế độ khóa S U X S þ þ ý U þ ý ý X ý ý ý Chương VI : Giao tác 21 Chế độ khóa • Khi một transac.on Ti cần truy cập và thao tác trên một đơn vị dữ liệu X, nó sẽ đòi phát khóa A trên X. Nhưng khi ấy nếu transac.on Tj đang giữ khóa B trên X (và khóa A với khóa B không tương thích) thì Ti phải đợi Tj giải phóng khóa B trên X nó mới phát được khóa A trên X à Hiện tượng chờ đợi lẫn nhau. Chương VI : Giao tác 22 Nội dung trình bày • Giao tác (Transac.on) • Xử lý đồng thời (Concurrency) • Chế độ khóa • Khai báo tường minh giao tác • Mức cô lập • Các cấp độ khóa • Dead-lock Chương VI : Giao tác 23 Khai báo tường minh giao tác • Trong SQL Server, ta có thể khai báo tường minh các giao tác, có thể là trên một khối lệnh độc lập hay trong thân một thủ tục thường trú.

• Ngoài ra SQL Server còn có thể phát sinh các giao tác ngầm định (Ví dụ : Trigger) Chương VI : Giao tác 24 Khai báo tường minh giao tác • Các chỉ thị : • Begin tran : Đặt trước dòng lệnh đầu :ên của giao tác (1 chỉ thị duy nhất cho 1 giao tác) • Commit tran : Đặt sau dòng lệnh cuối cùng hoàn tất giao tác (1 chỉ thị duy nhất cho 1 giao tác) ? • Rollback tran : Đặt tại các vị trí kiểm lỗi hay các nhánh rẽ logic ứng với trường hợp nghiệp vụ thất bại. (nhiều chỉ thị cho 1 giao tác) Chương VI : Giao tác 25 Khai báo tường minh giao tác • Kiểm lỗi trong giao tác • Lỗi có thể sảy ra sau các thao tác : • Insert, Update (trùng khóa chính, sai kiểu dữ liệu, sai định dạng ngày tháng,…) • Delete (ràng buộc tồn tại,…) • Select (login không có quyền trên object…) • Sau mỗi thao tác trên phải kiểm lỗi bằng biến hệ thống @@error (=0 à không có lỗi,≠0 à có lỗi) • Có thể không kiểm tra lệnh select để tránh làm cho giao tác quá cồng kềnh (vì lỗi này ít khi sảy ra và có thể khống chế được so với 2 loại lỗi cón lại) Chương VI : Giao tác 26 Khai báo tường minh giao tác • Kiểm lỗi trong giao tác • Khi lỗi sảy ra (@@error ≠ 0), cần thực hiện các công việc : • Báo lỗi (nếu cần) bằng các lệnh print hay raise error • Rollback tran (bắt buộc) • Nếu Tran khai báo trong SP thì thông thường phải ngưng ngay SP ấy bằng lệnh return Chương VI : Giao tác 27 Khai báo tường minh giao tác • Kiểm lỗi trong giao tác If @@error <> 0 Begin Print ‘…’ Rollback tran Return End Khối lệnh kiểm tra lỗi Chương VI : Giao tác 28 Khai báo tường minh giao tác • Ví dụ Create proc TongTien @MaDH varchar(10) As Declare @ThanhTien float Declare @TienThue float Declare @TienChietKhau float Declare @DonGia float,@SoLuong int Begin tran Set @SoLuong = (select SoLuong from DonHang where Ma = @MaDH) --Khối lệnh kiểm tra lỗi Chương VI : Giao tác 29 Khai báo tường minh giao tác • Ví dụ Set @DonGia = (select DonGia from DonHang where Ma = @MaDH) --Khối lệnh kiểm tra lỗi Set @TienThue = (select ThueSuat from DonHang where Ma = @MaDH) --Khối lệnh kiểm tra lỗi Set @TienChietKhau = (select ChietKhau from DonHang where Ma = @MaDH) --Khối lệnh kiểm tra lỗi Set @ThanhTien = @DonGia*@SoLuong Set @TienThue = @ThanhTien*@TienThue/100 Set @ThanhTien = @ThanhTien + @TienThue Chương VI : Giao tác 30 Khai báo tường minh giao tác • Ví dụ Set @TienChietKhau = @ThanhTien*@TienChietKhau/100 Set @ThanhTien = @ThanhTien - @TienChietKhau Update DonHang set ThanhTien = @ThanhTien where Ma = @MaDH --Khối lệnh kiểm tra lỗi Commit tran Go Chương VI : Giao tác 31 Nội dung trình bày • Giao tác (Transac.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ