công nghệ ado.net cới c# - kiểm soát và giảm thiểu xung đột hoạt động xử lý cơ sở dữ liệu

31 489 2
công nghệ ado.net cới c# - kiểm soát và giảm thiểu xung đột hoạt động xử lý cơ sở dữ liệu

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

11 HỌC LẬP TRÌNH WEB TỪ BẢN ĐẾN NÂNG CAO HocLapTrinhWeb.COM 22 HỌC LẬP TRÌNH WEB TỪ BẢN ĐẾN NÂNG CAO HocLapTrinhWeb.COM Kiểm soát giảm thiểu xung đột hoạt động xử sở dữ liệu 1.Tại sao phát sinh vấn đề tranh chấp dữ liệu? 2.Các cấp độ lập trong SQL Server 2005 3.Hướng dẫn sử dụng các cấp độ lập trong SQL Server 2005 33 HỌC LẬP TRÌNH WEB TỪ BẢN ĐẾN NÂNG CAO HocLapTrinhWeb.COM Giới thiệu • Trong các ƯD nhiều người dùng, tại một thời điểm nhiều người dùng cùng truy cập cập nhật dữ liệu giống nhau • Dẫn đến việc tranh chấp dữ liệu người phát triển ƯD phải đề ra cách giải quyết tranh chấp • Để giảm thiểu mức độ xung đột một trong những cách giải quyết là sử dụng Transaction • MS SQL Server 2005 đã hỗ trợ thêm hai cấp độ lập mới (ngoài những cấp độ đã hỗ trợ trước) • Các cấp độ lập mới này nhằm làm giảm thiểu thời gian khóa các mẩu tin 44 HỌC LẬP TRÌNH WEB TỪ BẢN ĐẾN NÂNG CAO HocLapTrinhWeb.COM 1. Tại sao tranh chấp dữ liệu? • Các tranh chấp dữ liệu sẽ phát sinh khi cùng lúc nhiều người dùng đọc cập nhật cùng dữ liệu giống nhau • Sử dụng một trong các kỹ thuật sau để quản việc nhiều người dùng cùng cập nhật: − Pessimistic concurrency − Optimistic concurrency − “Last in wins” 55 HỌC LẬP TRÌNH WEB TỪ BẢN ĐẾN NÂNG CAO HocLapTrinhWeb.COM Pessimistic concurrency • Khóa ngay tại thời điểm đọc − Ví dụ: khi user A đọc một mẩu tin thì database engine lập tức khóa ngay mẩu tin này − Các user khác không thể cập nhật được mà phải chờ − Khi user A kết thúc cập nhật thì database engine mới mở khóa các user khác mới thể cập nhật được 66 HỌC LẬP TRÌNH WEB TỪ BẢN ĐẾN NÂNG CAO HocLapTrinhWeb.COM Pessimistic concurrency • Đặc điểm − Bảo đảm tại một thời điểm chỉ cho phép một cập nhật − Thích hợp với các ƯD dữ liệu quan trọng cần thay đổi tập trung. Ví dụ các ƯD cho phép đặt chổ − Thời gian chiếm giữ càng ngắn càng tốt − Không thích hợp với mô hình disconnect vì các kết nối được duy trì đủ để đọc hoặc cập nhật  database engine không thể khóa dữ liệu trong thời gian dài được 77 HỌC LẬP TRÌNH WEB TỪ BẢN ĐẾN NÂNG CAO HocLapTrinhWeb.COM Optimistic concurrency • Khóa tại thời điểm ghi − Ví dụ: khi các user A B cùng đọc một mẩu tin thì database engine không khóa mẩu tin này. Nhưng: − Giả sử user A sửa ghi thành công (trước user B) − Sau đó thì đến user B ghi, database engine kiểm tra phát hiện mẩu tin đã bị sửa trước đó  user B ghi không thành công (First in wins) 88 HỌC LẬP TRÌNH WEB TỪ BẢN ĐẾN NÂNG CAO HocLapTrinhWeb.COM Optimistic concurrency • Đặc điểm − Tại một thời điểm thể nhiều người dùng cập nhật − Thích hợp với các ƯD dữ liệu ít thay đổi tập trung − Không hao tốn chi phí cho việc khóa dữ liệu − Thích hợp với mô hình disconnect vì người dùng thể làm việc lâu dài với dữ liệu đã cache sau khi kết thúc làm việc thì cập nhật lại CSDL − ADO.NET cho phép chọn lựa “Last in wins” hoặc “First in wins” − Mặc định là “First in wins” 99 HỌC LẬP TRÌNH WEB TỪ BẢN ĐẾN NÂNG CAO HocLapTrinhWeb.COM Minh họa Optimistic – First in wins • User A cập nhật dữ liệu • User B cũng cập nhật dữ liệu • User A ghi trước thành công • User B ghi sau bị lỗi 1010 HỌC LẬP TRÌNH WEB TỪ BẢN ĐẾN NÂNG CAO HocLapTrinhWeb.COM Minh họa Optimistic – Last in wins • User A cập nhật dữ liệu • User B cũng cập nhật dữ liệu • User A ghi trước thành công • User B ghi sau cũng thành công (dữ liệu user A thay đổi thể bị mất) [...]... không yêu cầu khóa dữ liệu thể đọc thấy dữ liệu đang bị thay đổi trong các giao tác khác •Read Uncommited chỉ bảo đảm dữ liệu đọc không bị hỏng vật 16 HỌC LẬP TRÌNH WEB TỪ BẢN ĐẾN NÂNG CAO HocLapTrinhWeb.COM Minh họa Read Uncommited •User A cập nhật dữ liệu nhưng chưa kết thúc •User B xem dữ liệu thấy dirty read •User B không cập nhật dữ liệu được 17 HỌC LẬP TRÌNH WEB TỪ BẢN ĐẾN NÂNG... TRÌNH WEB TỪ 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 thể đọc thấy dữ liệu chưa được Commit của T1 12 HỌC LẬP TRÌNH WEB TỪ BẢN ĐẾN NÂNG CAO HocLapTrinhWeb.COM Lỗi Non-repeatable read •T1 đang đọc dữ liệu đã được Commit •T2 thể cập nhật dữ liệu này •T1 đọc lại thấy sự thay đổi 13 HỌC LẬP TRÌNH WEB TỪ BẢN ĐẾN... CAO HocLapTrinhWeb.COM Lỗi Phantom read •T1 đang đọc dữ liệu đã được Commit dữ liệu được đọc theo điều kiện •T2 thể cập nhật dữ liệu liên quan đến điều kiện (mà T2 đang đọc) •T1 đọc lại thấy sự thay đổi 14 HỌC LẬP TRÌNH WEB TỪ BẢN ĐẾN NÂNG CAO HocLapTrinhWeb.COM Isolation Levels Available in SQL Server 2005 15 HỌC LẬP TRÌNH WEB TỪ BẢN ĐẾN NÂNG CAO HocLapTrinhWeb.COM Read Uncommited... phải diễn ra trong một thời gian dài khi yêu cầu đọc thì dữ liệu đọc là phải chính xác tuyệt đối −Thích hợp với việc truy cập dữ liệu tuần tự 25 HỌC LẬP TRÌNH WEB TỪ BẢN ĐẾN NÂNG CAO HocLapTrinhWeb.COM 3 Hướng dẫn sử dụng các cấp độ lập •Cấp độ lập Read Commited with Snapshots −ƯD yêu cầu việc truy cập dữ liệu sẽ diễn ra trong một thời gian dài Dữ liệu truy cập nhất quán kể từ khi bắt... đọc 26 HỌC LẬP TRÌNH WEB TỪ BẢN ĐẾN NÂNG CAO HocLapTrinhWeb.COM 3 Hướng dẫn sử dụng các cấp độ lập •Cấp độ lập Repeatable Read −ƯD yêu cầu đọc dữ liệu để xem, tính toán luôn bảo đảm tính nhất quán thể sau khi xem, tính toán thì quyết định cập nhật −Khi xem tính toán dữ liệu kết thúc thì các giao tác khác mới được cập nhật dữ liệu 27 HỌC LẬP TRÌNH WEB TỪ BẢN ĐẾN NÂNG CAO HocLapTrinhWeb.COM... lập Snapshot −ƯD yêu cầu đọc dữ liệu để xem, tính toán luôn bảo đảm tính nhất quán thể sau khi xem, tính toán thì không quyết định cập nhật −Các giao tác khác vẫn được xem cập nhật dữ liệu 28 HỌC LẬP TRÌNH WEB TỪ BẢN ĐẾN NÂNG CAO HocLapTrinhWeb.COM 3 Hướng dẫn sử dụng các cấp độ lập •Cấp độ lập Serializable −ƯD yêu cầu đọc dữ liệu để xem, tính toán luôn bảo đảm tính nhất quán... tác đọc sẽ bị treo (dead lock) khi dữ liệu đang bị thay đổi bởi các giao tác khác •Khắc phục dị biệt Dirty Read 18 HỌC LẬP TRÌNH WEB TỪ BẢN ĐẾN NÂNG CAO HocLapTrinhWeb.COM Minh họa Read Commited •User A đang cập nhật dữ liệu chưa kết thúc •User B không được xem dữ liệu (giải quyết được dirty read)  phải chờ user A kết thúc mới được xem 19 HỌC LẬP TRÌNH WEB TỪ BẢN ĐẾN NÂNG CAO HocLapTrinhWeb.COM... TỪ BẢN ĐẾN NÂNG CAO HocLapTrinhWeb.COM 3 Hướng dẫn sử dụng các cấp độ lập •Cấp độ lập Read Uncommited −ƯD không yêu cầu dữ liệu đọc được phải chính xác tuyệt đối −Thao tác dữ liệu phải kết thúc càng nhanh càng tốt 24 HỌC LẬP TRÌNH WEB TỪ BẢN ĐẾN NÂNG CAO HocLapTrinhWeb.COM 3 Hướng dẫn sử dụng các cấp độ lập •Cấp độ lập Read Commited with Locking −ƯD không yêu cầu việc truy cập dữ liệu. .. •Giao tác sử dụng cấp độ lập này sẽ khóa các dữ liệu mà nó đang truy vấn •Các thao tác khác sẽ không cập nhật được dữ liệu đang bị khóa (dead lock) •Khắc phục dị biệt Dirty Read Repeatable Read 20 HỌC LẬP TRÌNH WEB TỪ BẢN ĐẾN NÂNG CAO HocLapTrinhWeb.COM Serializable •Được xem là mức lập cao nhất •Giao tác sử dụng cấp độ lập này sẽ khóa các dữ liệu mà nó đang làm việc (có thể khóa toàn bộ...HỌC LẬP TRÌNH WEB TỪ BẢN ĐẾN NÂNG CAO HocLapTrinhWeb.COM 2 Các cấp độ lập (isolation level) •Khi tạo Transaction thể xác định cấp độ 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 thể gây ra các lỗi dị biệt như: •Dirty read: đọc dữ liệu chưa được Commit •Non-repeatable read: đọc không nhất quán •Phantom . 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 Kiểm soát và giảm thiểu xung đột hoạt động xử lý cơ sở dữ liệu 1.Tại sao. dùng cùng truy cập và cập nhật dữ liệu giống nhau • Dẫn đến việc tranh chấp dữ liệu và người phát triển ƯD phải đề ra cách giải quyết tranh chấp • Để giảm thiểu mức độ xung đột một trong những. WEB TỪ CƠ BẢN ĐẾN NÂNG CAO HocLapTrinhWeb.COM Minh họa Optimistic – First in wins • User A cập nhật dữ liệu • User B cũng cập nhật dữ liệu • User A ghi trước và thành công • User B ghi sau và bị

Ngày đăng: 28/05/2014, 18:04

Mục lục

  • Kiểm soát và giảm thiểu xung đột hoạt động xử lý cơ sở dữ liệu

  • 1. Tại sao có tranh chấp dữ liệu?

  • Minh họa Optimistic – First in wins

  • Minh họa Optimistic – Last in wins

  • 2. Các cấp độ cô lập (isolation level)

  • Isolation Levels Available in SQL Server 2005

  • Minh họa Read Uncommited

  • Minh họa Read Commited

  • Hai cấp độ cô lập mới

  • 3. Hướng dẫn sử dụng các cấp độ cô lập

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan