1 / 49

Chương 4 . Xử lý truy xuất đồng thời

Chương 4 . Xử lý truy xuất đồng thời. Đặt vấn đề. DataBase. A. A. C. B. D. Tranh chấp dữ liệu. Nội dung bài học. Giao dịch (Transaction) Các vấn đề của truy xuất đồng thời Kỹ thuật khóa trong SQL Server. Nội dung bài học. Giao dịch (Transaction) Khái niệm giao dịch

etta
Download Presentation

Chương 4 . Xử lý truy xuất đồng thời

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Chương 4. Xử lý truy xuấtđồng thời

  2. Đặtvấnđề DataBase A A C B D Tranhchấp dữ liệu

  3. Nội dung bàihọc • Giaodịch (Transaction) • Cácvấnđềcủatruyxuấtđồngthời • Kỹthuậtkhóatrong SQL Server

  4. Nội dung bàihọc • Giaodịch (Transaction) • Kháiniệmgiaodịch • Cáctínhchất ACID củagiaodịch • Sửdụnggiaodịchtrong SQL server • Cácvấnđềcủatruyxuấtđồngthời • Kỹthuậtkhóatrong SQL Server

  5. Kháiniệmgiaodịch • Giao dịchlà 1 đơn vị xử lý nguyên tố gồm 1chuỗi các hành động tương tác lên CSDL. • Khithựchiệnmộtgiaodịchhoặcphảithựchiện tất cả các hành độngcủa nó hoặc không thực hiện hành độngnào hết. • Một số thuật ngữ liên quan đến giao dịch: • Begin [transaction/tran]: bắt đầu một transaction • Commit [transaction/tran]: hoàn tất một transaction • Rollback [transaction/tran] : quay lui, hủy bỏ toàn bộ phần giao dịchđã thực hiện trước đó

  6. Tínhchất ACID củagiaodịch • Tínhnguyêntố (Atomicity) • Khôngthể chia nhỏđượcnữa • Tínhnhấtquán (Consistancy) • GiaodịchkhôngphávỡtrạngtháinhấtquáncủaCSDL • Tínhđộclập (Isolation) • Giaodịchkhôngảnhhưởng/ chịuảnhhưởngcủagiaodịchkhác • Tínhbềnvững (Durability) • Sau khi giao dịchcommit thành công, tất cả những thay đổi trên CSDL mà giao dịchđã thực hiện phải được ghi nhận chắc chắn (vào ổ cứng). • HQT CSDL luôn phải có cơ chế phục hồi dữ liệu để đảm bảo điều này, thường dùng cơ chế ghi nhận bằng transaction log

  7. Đểđảmbảotính Atomicity • Để đảm bảo tính chất A của giao dịch, người sử dụng phải điều khiểntường minhsự rollback của giao dịch. • Cần kiểm tra lỗi sau khi thực hiện mỗi thao táctrong giao dịchđể có thể xử lý rollback kịp thời • Kiểmtralỗi: dùngtry…catchhoặc @@error • Vídụ: TAIKHOAN (MaTK, ChuTK, SoDuTK) Viếtthủtụcđểchuyểnkhoảnmộtsốtiềntừtàikhoảnnày sang tàikhoảnkhác

  8. Nội dung bàihọc • Giaodịch (Transaction) • Cácvấnđềcủatruyxuấtđồngthời • Mấtdữliệuđãcậpnhật (Lost Updated) • Đọcphảidữliệurác (Dirty Read) • Khôngthểđọclại (Unrepeatable Read) • “Bóng ma” dữliệu (Phantom) • Kỹthuậtkhóatrong SQL Server

  9. Mấtdữliệuđãcậpnhật(Lost Updated) • P1và P2xửlýđồngthời: A=30 A=15 A=20 A=20 A=20 A=15 A=30 A=15 A=30 A=30

  10. Đọcphảidữliệurác(Dirty Read) • P1và P2xửlýđồngthời: A=50 B=40 B=30 B=30 A=50 B=30 B=40 10 B=40 B=40 C=90 C=90

  11. Khôngthểđọclại (Unrepeatable Read) • P1và P2xửlýđồngthời: A=50 A=60 A=50 A=50 A=50 A=60 A=60 A=60

  12. Bóng ma dữliệu (Phantom) • P1và P2xửlýđồngthời: A=50 B=30 C=70 A=50 C=70 C=70 A=50

  13. Nội dung bàihọc • Giaodịch (Transaction) • Cácvấnđềcủatruyxuấtđồngthời • Kỹthuậtkhóatrong SQL Server • Kỹthuậtkhóa (Locking) • Cácmứcđộcôlập • Khóatrựctiếptrongcâulệnh • Deadlock

  14. Kỹthuậtkhóa • Mộtgiaodịch P trướckhimuốnthaotác (read/write) lênmộtđơnvịdữliệu A phảiphátramộtyêucầuxinkhóa A: lock(A) • Nếuyêucầuđượcchấpthuậnthìgiaodịch P mớiđượcphépthaotáclênđơnvịdữliệu A • Saukhithaotácxong, giaodịch P phảiphátralệnhgiảiphóng A: unlock(A)

  15. Vídụkỹthuậtkhóa Lock(A), Read(A) A=50 A=50 Read(A) Lock(A), A=A-30 A=20 A=A+30 A=80 A=60 Write(A) A=20 A=80 Write(A) , Unlock(A) A=30 , Unlock(A) Read(A) A=80 Read(A) Lock(A), A=A-30 Write(A) Read(A) , Unlock(A) Read(A) Lock(A), A=A+30 Write(A) , Unlock(A)

  16. Khóađọc + khóaghi • Read lock • GiaodịchgiữSlockđượcphépĐỌCdữliệu, nhưngkhôngđượcphépghi. • NhiềugiaodịchcóthểđồngthờigiữSlocktrêncùng 1 đơnvịdữliệu • Write lock • GiaodịchgiữXlockđượcphépGHI + ĐỌC dữliệu • Tại 1 thờiđiểmchỉcótốiđa1 giaodịchđượcquyềngiữXlocktrên 1 đơndữliệu. • KhôngthểthiếtlậpSlocktrênđơnvịdữliệuđangcódạngXlock. • = Shared lock (Slock) = Exclusive lock (Xlock)

  17. Khóadựđịnhghi • Update lock = Intent - to - update lock (Ulock): Khóa dự định ghi • Ulock sử dụng khi đọc dữ liệu với dự định ghi trở lại trên dữ liệu này. • Ulock là chế độ khoá trung gian giữa Slock và Xlock • Khi thực hiện thao tác ghi lên dữ liệu thì bắt buộc Ulock phải tự động chuyển thành Xlock • GiaodịchgiữUlockđượcphépGHI + ĐỌC dữliệu • Tại 1 thờiđiểmchỉcótốiđa1 giaodịchđượcquyềngiữUlocktrên 1 đơndữliệu. • CóthểthiếtlậpSlocktrênđơnvịdữliệuđangcódạngUlock

  18. Bảngtươngthíchgiữacácchếđộkhóa

  19. Nội dung bàihọc • Cácvấnđềcủatruyxuấtđồngthời • Kỹthuậtkhóa • Kỹthuậtkhóatrong SQL Server • Kỹthuậtkhóa (Locking) • Mứccôlậptronggiaodịch • Khóatrựctiếptrongcâulệnh • Deallock

  20. Mứcđộcôlậpcủagiaodịch • Mụcđích: • Tựđộng đặt khóa cho các thao tác (đọc) trong kết nối dữ liệu hiện hành. • Cácmứcđộcôlập • Read Uncommitted • Read Committed • Repeatable Read • Serializable

  21. Read Uncommitted • Đặcđiểm: • Đọcdữliệu: khôngcầnphảithiếtlậpSLock • Ghidữliệu: SQL Server tựđộngthiếtlậpXLocktrênđơnvịdữliệuđượcghi, XLockđượcgiữchođếnhếtgiaodịch

  22. Read Uncommitted + vấnđề Lost Updated KHACHHANG ABC ABC ABC XYZ XYZ XYZ Xlock Xlock Xlock

  23. Read Uncommitted + vấnđề Dirty Read KHACHHANG ABC ABC Xlock

  24. Read Uncommitted • Ưu điểm: • Giảiquyếtvấnđề Lost Updated • KhôngcầnthiếtlậpSlockkhiđọc=> khôngcảntrởgiaodịchkhácgiữkhóaXlock. • Hạnchế: • Cókhảnăngxảyra 3 vấnđềcủatruyxuấtđồngthời: Dirty Read, Unrepeatable Read, Phantom

  25. Read Committed • Đặc điểm: • Đọcdữliệu: SQL server tựđộngthiếtlậpSLock trên đơn vị dữ liệu được đọc, SLock được giải phóngngay sau khi đọc xong • Ghidữliệu: SQL server tựđộngthiếtlậpXLock trên đơn vị dữ liệu được ghi, XLock được giữ chođến hết giao dịch

  26. Read Commited + vấnđề Dirty Read KHACHHANG LêVănTuyên ABC ABC Xlock Slock Slock

  27. Read Commited + vấnđềUnrepeatable Read KHACHHANG LêVănTuyên ABC ABC Slock Slock Xlock

  28. Read Committed • Ưu điểm: • Giải quyết vấn đề Dirty Read, Lost Updated • SLock được giải phóng ngay ==> không cản trở nhiều đến thao tác ghidữliệucủa các giao dịchkhác. • Hạnchế: • Chưa giải quyết được vấn đề Unrepeatable Read, Phantom

  29. Repeatable Read • Đặc điểm: • Đọcdữliệu: SQL server tựđộngthiếtlập Slock trên đơn vị dữ liệu được đọc và giữ Slock đến hếtgiao dịch. • Ghidữliệu: SQL server tựđộngthiếtlậpXLock trên đơn vị dữ liệu được ghi, XLock được giữ chođến hết giao dịch.

  30. Repeatable Read + vấnđề Unrepeated Read KHACHHANG LêVănTuyên LêVănTuyên ABC Slock Xlock Xlock

  31. Repeatable Read + vấnđề Phantom HANGHOA Nồicơmđiện Sharp Nồicơmđiện Sharp Slock Slock IPad IP IPad Cái 100 10000000

  32. Repeatable Read • Ưu điểm: • Giải quyết được 3 vấn đề: Lost Updated, Dirty Read và Unrepeatable Read • Khuyết điểm: • Chưa giải quyết được vấn đề Phantom, do vẫn cho phép insert những dòng dữliệu thỏa điều kiện thiết lập Slock • Slock được giữ đến hết giao dịch==> cản trở việc cập nhật dữ liệu của cácgiaodịchkhác

  33. Serializable • Đặc điểm: • Đọcdữliệu: SQL server tựđộngthiếtlậpSLock trên đơn vị dữ liệu được đọc và giữ Slock này đến hết giao dịch • Không cho phép thêmnhững dòng dữ liệu thỏa mãn điều kiện thiết lập Slock • Ghidữliệu: SQL server tựđộngthiếtlậpXLock trên đơn vị dữ liệu được ghi, ELock được giữ chođến hết giao dịch

  34. Serializable + vấnđề Phantom HANGHOA Nồicơmđiện Sharp Nồicơmđiện Sharp Slock IP IPad Cái 100 10000000

  35. Serializable • Ưu điểm: • Giải quyết được 4 vấn đề: Lost Updated, Dirty Read,Unrepeatable ReadvàPhantom • Khuyết điểm: • Slock được giữ đến hết giao dịch==> cản trở việc cập nhật dữ liệu của cácgiaodịchkhác • Không cho phép Insert những dòng dữ liệu thỏa mãn điều kiện thiết lập Slock ==> cản trở việc thêmmớidữliệucủacácgiaodịchkhác

  36. Lưu ý • Mứccôlậpmặcđịnhtrong SQL Server làRead Commited • MứccôlậpkhôngquantâmkhóaUlock • Tầm vực của Isolation level là ở mức connection chứ không phải mức transaction. • Khi 1 connection N được đặt mức cô lập X thì X sẽ phát huy hiệu lực trên tất cả các transaction Ti chạy trên N

  37. Nội dung bàihọc • Cácvấnđềcủatruyxuấtđồngthời • Kỹthuậtkhóa • Kỹthuậtkhóatrong SQL Server • Kỹthuậtkhóa (Locking) • Mứccôlậptronggiaodịch • Khóatrựctiếptrongcâulệnh • Deadlock

  38. Đặtvấnđề • Mức cô lập quyết định cách phát và giữ khóa S trong một transaction và có hiệu lực trên tất cả các thao tác đọc trong transaction đó. • Thực tế, ta cần phát và giữ khóa Slocktheo các cách khác nhau cho các thao tác đọc khác nhau trong cùng một transaction

  39. Khóatrựctiếptrongcâulệnh • Cúpháp:

  40. Cácchếđộkhóatrựctiếp (lock mode)

  41. KếthợpMứccôlập + Khóatrựctiếp • Trong transaction luôn có các thao tác yêu cầu bảo vệ nghiêm ngặt và các thao tác ít yêu cầu bảo vệ nghiêm ngặt • Dùng mứccôlậpứng với yêu cầu bảo vệ ít nghiêm ngặt nhất • Bổ sung lock trựctiếpvào các thao tác yêu cầu bảo vệ nghiêm ngặt hơn mức mà mứccôlậpđó cung cấp.

  42. Vídụ

  43. Nội dung bàihọc • Cácvấnđềcủatruyxuấtđồngthời • Kỹthuậtkhóa • Kỹthuậtkhóatrong SQL Server • Kỹthuậtkhóa (Locking) • Mứccôlậptronggiaodịch • Khóatrựctiếptrongcâulệnh • Deadlock

  44. Deadlock • Khi xử lý đồng thời, không tránh khỏi việc transaction này phải chờ đợi transaction khác • Nếu vì lý do gì đó mà hai transaction lại chờ lẫn nhau vĩnh viễn, không cái nào trong hai có thể hoàn thành được thì ta gọi đó là hiện tượng Dead Lock

  45. Xửlý Deadlock trong SQL Server • SQL Server sẽ chọn 1 trong 2 transaction gây deadlock để hủy bỏ, khi đó transaction còn lại sẽ được tiếp tục thực hiện cho đến khi hoàn tất • Transaction bị chọn hủybỏ là transaction mà SQL ước tính chi phí cho phần việc đã làm được ít hơn transaction còn lại.

  46. XửlýDeadLocktrong SQL Server

  47. Hếtchương 4

More Related