1. Trang chủ
  2. » Công Nghệ Thông Tin

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 490 2

Đ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

Thông tin cơ bản

Định dạng
Số trang 31
Dung lượng 757 KB

Nội dung

Giới thiệu •Trong các ƯD nhiều người dùng, tại một thời điểm có nhiều người 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

Trang 1

1

Trang 2

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 phát sinh vấn đề tranh chấp dữ liệu?

2.Các cấp độ cô lập trong SQL Server 2005

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

Trang 3

Giới thiệu

Trong các ƯD nhiều người dùng, tại một thời điểm có nhiều người 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 cách giải quyết là sử dụng Transaction

MS SQL Server 2005 đã hỗ trợ thêm hai cấp độ

cô lập mới (ngoài những cấp độ đã hỗ trợ trước)

Các cấp độ cô lập mới này nhằm làm giảm

thiểu thời gian khóa các mẩu tin

Trang 4

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

Các tranh chấp dữ liệu sẽ phát sinh khi cùng lúc có nhiều người dùng đọc và 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 lý việc nhiều người dùng cùng cập nhật:

−Pessimistic concurrency

−Optimistic concurrency

−“Last in wins”

Trang 5

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 và các user khác mới có thể cập nhật được

Trang 6

−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

Trang 7

Optimistic concurrency

Khóa tại thời điểm ghi

−Ví dụ: khi các user A và 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 và ghi thành công (trước user B)

−Sau đó thì đến user B ghi, database engine kiểm tra

và phát hiện mẩu tin đã bị sửa trước đó  user B ghi

không thành công (First in wins)

Trang 8

Optimistic concurrency

Đặc điểm

−Tại một thời điểm có thể có nhiều người dùng cập nhật

−Thích hợp với các ƯD có 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 có

thể làm việc lâu dài với dữ liệu đã cache và 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”

Trang 9

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ị lỗi

Trang 10

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 và thành công

User B ghi sau và cũng thành công (dữ liệu

user A thay đổi có thể bị mất)

Trang 11

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 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 read: đọc không bình thường

Trang 12

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

Trang 13

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

Trang 14

Lỗi Phantom read

T1 đang đọc dữ liệu đã được Commit và dữ

liệu được đọc theo điều kiện

T2 có thể cập nhật dữ liệu liên quan đến điều kiện (mà T2 đang đọc)

T1 đọc lại và thấy có sự thay đổi

Trang 15

Server 2005

Trang 16

Read Uncommited

Là cấp độ cô lập thấp nhất trong giao tác

Các thao tác đọc không yêu cầu khóa dữ liệu

có 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 lý

Trang 17

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 và thấy dirty read

User B không cập nhật dữ liệu được

Trang 19

Minh họa Read Commited

User A đang cập nhật dữ liệu và 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

Trang 20

Repeatable Read

Giao tác sử dụng cấp độ cô 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 và Repeatable

Read

Trang 21

Serializable

Được xem là mức cô lập cao nhất

Giao tác sử dụng cấp độ cô 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ộ table)

Khắc phục dị biệt Dirty Read, Repeatable Read

và Phantom Read

Trang 22

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

Read Commited with snapshots: sử dụng row versioning và Optimistic

Snapshots: giải quyết được các lỗi dị biệt

Trang 23

−Concurrency Conflicts: đụng độ giữa các user

−Performance Overhead: chi phí thực hiện

Trang 24

3 Hướng dẫn sử dụng các cấp độ

cô lập

Cấp độ cô 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

Trang 25

cô lập

Cấp độ cô lập Read Commited with Locking

−ƯD không yêu cầu việc truy cập dữ liệu phải diễn ra trong một thời gian dài Và khi có 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ự

Trang 26

3 Hướng dẫn sử dụng các cấp độ

cô lập

Cấp độ cô lập Read Commited with Snapshots

−ƯD có 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 đầu đọc

Trang 27

cô lập

Cấp độ cô lập Repeatable Read

−ƯD có yêu cầu đọc dữ liệu để xem, tính toán và luôn bảo đảm tính nhất quán Có thể sau khi xem, tính toán thì quyết định cập nhật

−Khi xem và 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

Trang 28

−Các giao tác khác vẫn được xem và cập nhật dữ liệu

Trang 30

Thực hành 1

Cài đặt cấp độ cô lập Read Commited with

Snapshots

Trang 31

Thực hành 2

Cài đặt cấp độ cô lập Snapshots

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

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w