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

Chuẩn bị cho kỳ thi 730 cơ bản về DB2 9, Phần 6: Nhất quán dữ liệu ppt

41 378 1
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Chuẩn bị cho kỳ thi 730 cơ bản về DB2 9, Phần 6: Nhất quán dữ liệu
Tác giả Roger Sanders
Trường học Trường Đại học Công nghệ Thông tin
Chuyên ngành Cơ sở dữ liệu
Thể loại Bài giảng
Năm xuất bản 2023
Thành phố Hồ Chí Minh
Định dạng
Số trang 41
Dung lượng 12,94 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Các đối tượng Sau khi hoàn thành bài học này, bạn có thể:  Xác định các nhân tố ảnh hưởng đến việc thực hiện khóa  Danh sách các đối tượng được điều khiển  Xác định các đặc trưng c

Trang 1

Chuẩn bị cho kỳ thi 730 cơ bản về DB2 9, Phần 6: Nhất quán dữ liệu

Roger Sanders, Quản lý cao cấp, EMC

Tóm tắt: Bài viết này giới thiệu khái niệm cơ bản của tính nhất quán cơ sở dữ

liệu và các cơ chế khác nhau trong sử dụng của DB2 để cho phép làm việc trong

cả môi trường dữ liệu một người dùng và nhiều người dùng Đây là bài viết thứ 6 trong bảy bài viết hỗ trợ bạn bắt đầu làm việc với DB2 9 trên hệ điều hành Linux, UNIX, và Windows™ chuẩn bị cho bài thi lấy chứng chỉ 730

Trước khi bạn bắt đầu

Về loạt bài viết này

Suy nghĩ về việc có được/đạt được chứng chỉ DB2 (Bài thi số 730)? Để đạt được điều này bạn tiếp cận một cách chính xác theo các hướng dẫn Đây là loạt bài gồm bảy bài viết chuẩn bị cho cuộc thi lấy chứng chỉ DB2 loạt bài viết này giới thiệu mọi thứ cơ bản cần thiết Các chủ đề này bạn cần phải hiểu rõ trước khi bạn làm bài kiểm tra đầu tiên Thậm chí kể cả khi bạn chưa có kế hoạch để có được chứng chỉ này, thì tập hợp các bài viết này vẫn là nơi tốt để bạn tìm hiểu xem cái gì mới khi sử dụng DB2 9

Về bài viết này

Bài viết này sẽ chỉ dẫn cho bạn khái niệm cơ bản nhất của tính nhất quán dữ liệu

và các cơ chế khác nhau được sử dụng bởi DB2 9 trong Linux, UNIX và Windows

để thực thi được trong cả hai môi trường cơ sở dữ liệu một người và nhiều người

sử dụng

Đây là bài viết thứ sáu trong loạt bảy bài viết bạn có thể sử dụng để chuẩn bị cho các bài thi Cơ bản về DB2 9 (DB2 9 Fundamental) Điểm trọng yếu của bài viết

Trang 2

này là giới thiệu các mục tiêu chính, đó là "tính nhất quán của dữ liệu" Bạn có thể xem các mục tiêu này tại: http://www-03.ibm.com/certify/tests/obj730.shtml

Các đối tượng

Sau khi hoàn thành bài học này, bạn có thể:

 Xác định các nhân tố ảnh hưởng đến việc thực hiện khóa

 Danh sách các đối tượng được điều khiển

 Xác định các đặc trưng của các khóa DB2

 Xác định mức độc lập được sử dụng để đưa ra trạng tái

Các điều kiện tiên quyết

Để hiểu được một số vấn đề quan trọng của bài viết này, bạn nên tham gia vào các phần sau:

Đối tượng: Là bất kỳ cái gì trong cơ sở dữ liệu mà có thể được tạo ra hay

thực thi với SQL (Ví dụ: các bảng, các chỉ mục, các gói, )

Bảng: Là một cấu trúc logic được sử dụng để hiển thị dữ liệu như là một

tập hợp của các hàng không định thứ tự với một số cột xác định Mỗi một cột chứa một tập giá trị, trong đó mỗi giá trị là cùng kiểu với nhau (hoặc

Trang 3

kiểu con của kiểu dữ liệu cột); định nghĩa cột cho phép xác định cấu trúc của bảng và các hàng của bảng chứa dữ liệu chính xác của bảng đó

Bản ghi: Thể hiện dữ liệu lưu trữ theo từng hàng trong bảng

Trường: Thể hiện của cột được lưu trong bảng

Giá trị: Xác định thành phần dữ liệu cái được tìm thấy tại mỗi hàng và cột

trong bảng cơ sở dữ liệu

Ngôn ngữ truy vấn cấu trúc (SQL): Là ngôn ngữ chuẩn được sử dụng để

định nghĩa các đối tượng và thực thi dữ liệu trong cơ sở dữ liệu quan hệ Để

có nhiều thông tin hơn về SQL hãy xem bài viết thứ tư trong loạt bài viết này

Bộ tối ưu hóa DB2: Là thành phần của bộ tiền biên dịch SQL

(precompiler) là cái được chọn để truy cập cho câu lệnh SQL Data

Manipulation Language (DML)(Ngôn ngữ xử lý dữ liệu) bằng việc mô hình hóa giá trị thực thi của một số truy cập riêng biệt và được chọn như là một cách với số chi phí cần thiết nhỏ nhất

Các yêu cầu hệ thống

Bạn không cần thiết phải có bản sao chép của DB2 9 để hoàn thành bài học này Tuy nhiên, bạn sẽ nhận được nhiều kết quả của bài học này hơn nếu bạn tải phiên bản dùng thử của IBM DB2 9 để làm việc trong bài học này

Trang 4

Các phiên làm việc

Tìm hiểu tính nhất quán dữ liệu

Tính nhất quán dữ liệu là gì? Cách để đưa được câu trả lời tốt nhất cho câu hỏi này

đó làm dựa vào ví dụ Công ty bạn làm việc là một chuỗi các nhà hàng và công việc bạn cần làm là xây dựng một cơ sở dữ liệu để có thể lưu trữ được dữ liệu cho từng nhà hàng này Để phiên làm việc giải quyết vấn đề này đơn giản, cơ sở dữ liệu của bạn chứa bảng thống kê cho từng nhà hàng trong chuỗi các nhà hàng Mỗi khi hàng hóa được cung cấp hoặc được sử dụng bởi từng nhà hàng riêng biệt thì bảng thống kê tương ứng của từng nhà hàng sẽ được sửa chữa tương ứng phù hợp với thay đổi đó

Bây giờ, khi có một số chai nước sốt cà chua được di chuyển từ một nhà hàng này tới một nhà hàng khác Khi đó, bảng thống kê báo cáo sẽ bị thay đổi tương ứng, số chai nước sốt cà chua của nhà hàng ban đầu cần phải giảm bớt đi và số chai nước sốt cà chua của nhà hàng nhận sẽ được tăng lên tương ứng Nếu bạn chỉ giảm số chai nước sốt cà chua của nhà hàng ban đầu mà lại không tăng được số chai nước

sốt cà chua của nhà hàng nhận trong bảng thống kê, dữ liệu sẽ trở lên mâu thuẫn -

và vì thế tổng số chai nước sốt cà chua của chuỗi nhà hàng là không được chính xác

Dữ liệu trong cơ sở dữ liệu có thể trở lên mâu thuẫn nếu người dùng quên thực hiện các thao tác thay đổi cần thiết (như trong ví dụ trước), nếu hệ thống bị phá vỡ trong khi người dùng đang thực hiện các thay đổi hoặc khi ứng dụng cơ sở dữ liệu

vì một lý do nào đó bị dừng đột ngột Sự mâu thuẫn cũng có thể xảy ra khi các người sử dụng truy cập đến cùng một bảng cơ sở dữ liệu tại cùng một thời gian

Để tránh việc xảy ra mâu thuẫn dữ liệu, đặc biệt phải thận trọng khi sử dụng trong môi trường nhiều người dùng, DB2 được thiết kế hỗ trợ để tránh sự mâu thuẫn trong dữ liệu:

Trang 5

 Các phiên làm việc (transactions)

 Các mức cô lập (iosolation levels)

 Các khóa (locks)

Các phiên làm việc và các khung phiên làm việc

Mỗi phiên làm việc (được biết như đơn vị công việc) là một dãy gồm một hoặc

nhiều các xử lý SQL được nhóm lại với nhau như một đơn vị riêng lẻ, phiên làm việc thường được sử dụng để xử lý ứng dụng Sự bắt đầu và kết thúc của phiên làm việc được định nghĩa là tập hợp các điểm xác định của cơ sở dữ liệu; sẽ có hai trường hợp hoặc là các xử lý SQL thực thi cho các cách phiên làm việc được áp dụng cho cơ sở dữ liệu (được xử lý - committed) hoặc là các xử lý của SQL không được thực hiện đầy đủ và bỏ qua (quay trở lại - rolled back)

Với việc nhúng các ứng dụng SQL và các tập mã lệnh (script) từ Command Center (Trung tâm câu lệnh) hoặc trên Script Center (Trung tâm tập lệnh) hoặc Command Line Processor (Xử lý dòng lệnh) các cách phiên làm việc được khởi tạo một cách

tự động cho lần đầu khi các câu lệnh SQL được thực thi, hay là sau khi kết nối đến

cơ sở dữ liệu thành công thì các phiên làm việc lúc này mới bị ngắt Cho một lần khởi tạo, phiên làm việc phải được ngắt bởi người dùng hoặc bởi ứng dụng đã

khởi động phiên làm việc đó trừ khi bộ xử lý biết trao quyền tự động (trong trường

hợp này mỗi một câu lệnh SQL cho phép xử lý được xem như một phiên làm việc đơn lẻ khi đó xử lý được nhanh chóng thực hiện)

Trong hầu hết các trường hợp, các phiên làm việc được thực thi hoặc bằng câu lệnh COMMIT hoặc bằng câu lệnh ROLLBACK Khi câu lệnh COMMIT được

Trang 6

thực thi, tất cả các thay đổi tới cơ sở dữ liệu khi các phiên làm việc khởi tạo được

cố định có nghĩa là các thay đổi sẽ được lưu trữ tới đĩa Khi câu lệnh

ROLLBACK được thực thi tất cả các thay đổi được tạo ra tới cơ sở dữ liệu khi phiên làm việc được khởi tạo được quay lại và cơ sở dữ liệu được trả lại ở trạng thái trước khi phiên làm việc được thực hiện Trong một trường hợp khác dữ liệu được đảm bảo trả lại trạng thái phù hợp khi hoàn thành phiên làm việc

Điều quan trọng là trong khi phiên làm việc cung cấp cơ sở dữ liệu đảm bảo thì sự thay đổi dữ liệu chỉ bị ngắt sau khi phiên làm việc được thực hiện thành công, điều

đó dẫn tới người dùng hay các ứng dụng cho phép đảm bảo rằng một dãy các xử lý SQL được thực hiện trong mỗi phiên làm việc luôn luôn đưa ra kết quả trong cơ sở

dữ liệu xác định

Hiệu quả của các xử lý COMMIT và ROLLBACK

Chú ý rằng, các phiên làm việc thường bị ngắt khi thực thi câu lệnh SQL dạng COMMIT hay ROLLBACK Để hiểu rõ các câu lệnh này làm việc như thế nào, bạn tham khảo tới ví dụ trong phần này

Nếu theo các câu lệnh SQL được hiển thị phần sau:

Ví dụ 1 Dòng công việc đơn giản gồm ba phiên làm việc

Trang 7

CONNECT TO MY_DB

CREATE TABLE DEPARTMENT (DEPT_ID INTEGER NOT NULL, DEPT_NAME VARCHAR(20))

INSERT INTO DEPARTMENT VALUES(100, 'PAYROLL')

INSERT INTO DEPARTMENT VALUES(200, 'ACCOUNTING')

Trang 8

ba được chèn thêm vào bảng DEPARTMENT và đồng thời bảng được trả lại ở trạng thái trước khi câu lệnh chèn thêm phần tử này được thực hiện Cuối cùng, khi câu lệnh COMMIT thứ hai được thực hiện thì thực hiện chèn thêm bản ghi thứ

tư xác định vào bảng DEPARMENT và cơ sở dữ liệu tiếp tục trả lại trạng thái phù hợp

Khi bạn nhìn thấy ví dụ này, lệnh xử lý xác nhận hoặc quay trở lại chỉ thực hiện thay đổi phù hợp để tạo ra phiên làm việc cái mà câu lệnh commit hay câu lệnh rollback thực hiện xử lý Khi mà dữ liệu bị thay đổi không được xem xét thì các người sử dụng và các ứng dụng khác luôn luôn không thể nhìn thấy chúng (tất nhiên có một ngoại lệ cái mà sẽ được trình bày ở phần sau), và chúng có thể quay lại kết quả đơn giản trước khi thực hiện xử lý quay trở lại Tuy nhiên khi một dữ liệu thay đổi được xem xét chúng trở lên có tác dụng với các người dùng và các ứng dụng khác và có thể không mất thời gian di chuyển bởi xử lý quay trở lại

Trang 9

Tác dụng của các phiên làm việc không thực hiện thành công

Chúng tôi đã trình bày điều gì xảy ra khi một phiên làm việc bị ngắt bởi câu lệnh COMMIT hoặc câu lệnh ROLLBACK Nhưng vấn đề gì xảy ra nếu hệ thống xảy

ra lỗi trước khi phiên làm việc có thể hoàn thành? Trong trường hợp này, Hệ quản trị cơ sở dữ liệu DB2 sẽ quay lại tất cả các sự thay đổi không được xem xét để có thể lưu giữ cơ sở dữ liệu phù hợp với giả định là có tồn tại ngay từ khi phiên làm việc được khởi tạo Hình 1 so sánh tác dụng của phiên làm việc thành công với các phiên làm việc bị lỗi trước khi nó được ngắt thành công

Hình 1 So sánh sự giữa phiên làm việc thành công và không thành công

Trang 10

việc chạy tuần tự có tiềm tàng khả năng cản trở với các phiên làm việc chạy ở chế

độ chen vào hoặc song song, điều này có nghĩa là các kết quả của chạy song song

đồng thời nhận được so với các kết quả chạy tuần tự Khi các phiên làm việc song song được sử dụng trong các môi trường nhiều người dùng, có bốn trường hợp hay các điều ngoại lệ có thể xảy ra:

Cập nhật thiếu (Lost update): Điều này xảy ra khi hai phiên làm việc

cùng đọc và sau đó cập nhật cho cùng một dữ liệu và khi đó có một trong hai phiên làm việc cập nhật bị mất Ví dụ: Phiên làm việc 1 và Phiên làm việc 2 cùng đọc một dòng của dữ liệu và cả hai đều thực hiện tính toán dựa trên dữ liệu đã đọc được Nếu Phiên làm việc 1 thực hiện cập nhật giá trị mới cho hàng và Phiên làm việc 2 cũng thực hiện tương tự thì thao tác xử

lý cập nhật của Phiên làm việc 1 là bị mất Bởi vì vậy nên DB2 được thiết

kế không cho phép xảy ra trường hợp đặc biệt này

Đọc dư thừa (Dirty read): Điều này xảy ra khi mà phiên làm việc thực

hiện đọc dữ liệu không được xem xét Ví dụ: Phiên làm việc 1 thay đổi hàng của dữ liệu và Phiên làm việc 2 đọc đến dữ liệu đã bị thay đổi trước khi Phiên làm việc 1 thực hiện được thao tác thay đổi đó Nếu Phiên làm

Trang 11

việc 1 thực hiện quay lại làm thay đổi này, Phiên làm việc 2 sẽ đọc đến dữ liệu tính toán mà thực tế không tồn tại

Đọc không lặp lại (Nonrepeatable read): Điều này xảy ra khi phiên làm

việc đọc đến một hàng hai lần nhưng dữ liệu thu được lại là khác nhau cho từng lần đọc Ví dụ: Phiên làm việc 1 đọc một hàng dữ liệu và Phiên làm việc 2 thực hiện thay đổi hoặc xóa ngay chính hàng đó Vì vậy khi Phiên làm việc 1 thực hiện đọc lại chính hàng đó nó sẽ thu được các giá trị khác

so với trước (nếu hàng đã được cập nhật) hoặc cảnh báo hàng đó không tồn tại (nếu hàng đã bị xóa)

Không xảy ra (Phantom): Điều này xảy ra khi một hàng dữ liệu phù hợp

với điều kiện tìm kiếm không được khởi tạo thực hiện lần thứ nhất nhưng lại được thực hiện trong lần xử lý sau Ví dụ: Phiên làm việc 1 đọc một tập các hàng phù hợp với một số điều kiện tìm kiếm và Phiên làm việc 2 chèn thêm hàng mới cũng phù hợp với điều kiện tìm kiếm trong Phiên làm việc

1 Nếu Phiên làm việc 1 thực hiện lại thao tác xử lý thì kết quả thu được một tập các hàng là có sự khác biệt so với các hàng đã thực hiện lần trước

Để duy trì tính ổn định của cơ sở dữ liệu và tính toàn vẹn của dữ liệu thì khi cho phép nhiều ứng dụng cùng truy cập đến cùng một dữ liệu tại cùng một thời điểm

thì phải đảm bảo tính thống nhất Một trong các cách mà DB2 cho phép thống nhất cơ sở dữ liệu đó là sử dụng các mức độc lập, cái mà cho phép xác định dữ

liệu được sử dụng như thế nào trong một phiên làm việc hoặc tính độc lập từ các phiên làm việc khác trong khi phiên làm việc đầu tiên thực hiện DB2 sử dụng các mức độc lập sau cho phép thống nhất sử dụng dữ liệu:

 Đọc lặp lại (Repeatable read)

 Đọc ổn định (Read stability)

Trang 12

 Tham khảo ổn định (Cursor stability)

 Đọc không được xem xét (Uncommitted read)

Mức độ độc lập đọc lặp lại cung cấp tất cả các trường hợp đặc biệt để làm giảm lượng lớn của sự đồng nhất (một số các phiên làm việc có thể được truy cập tới cùng một nguồn cùng lúc) Mức đọc độc lập không xem xét cung cấp mức lớn nhất của sự thống nhất nhưng cho phép cả ba trường hợp đặc biệt để xảy ra

Mức độc lập của đọc lặp lại

Mức độc lập của đọc lặp lại là mức độc lập giới hạn tốt nhất Khi nó được sử dụng, hiệu quả của một phiên làm việc là hoàn toàn độc lập từ tác dụng của phiên làm việc đồng nhất khác: đọc dư thừa, đọc không lặp lại, và không xảy ra Với

việc đọc lặp lại mọi hàng có thể được tham chiếu trong manner bởi phiên làm việc

thuộc quyền sở hữu và các dòng này là bị khóa trong suốt quá trình thực hiện phiên làm việc Với kết quả này, nếu cùng một câu lệnh SELECT được sử dụng hai hoặc nhiều lần hơn trong cùng một phiên làm việc, tập kết quả thu được luôn luôn là giống nhau Hơn thế, phiên làm việc chạy ở mức độc lập này có thể khôi phục cùng một tập các hàng nhiều lần và thực hiện xử lý các thao tác đó cho đến khi bị ngắt bởi xử lý xác nhận thực hiện lệnh hay quay trở lại Tuy nhiên, một phiên làm việc khác được ngăn chặn từ việc thực hiện chèn, cập nhập hoặc xóa thì điều này có thể ảnh hưởng đến bất kỳ hàng nào đã được truy cập thành công bởi phiên làm việc khi mà phiên làm việc dư thừa ra Để bảo đảm cho hành động này,

mỗi một hàng được tham chiếu đến bởi một phiên làm việc xác định được khóa lại

- không cho các hàng này được khôi phục hoặc sửa chữa tiếp Vì thế nếu phiên

Trang 13

làm việc quét qua 1,000 dòng để khôi phục 10 dòng thì khóa được yêu cầu và đánh dấu tất cả 1,000 dòng đó cho đến khi 10 dòng được khôi phục

Làm thế nào mức độc lập đọc lặp lại làm việc được trong tình huống thế giới thực?

Vì mục đích này bạn có thể sử dụng cơ sở dữ liệu DB2 để lưu giữ các bản ghi của khách sạn bao gồm thông tin đặt chỗ và thông tin các phòng và bạn có ứng dụng dựa trên nền Web để cho phép các cá nhân riêng lẻ có thể đặt phòng cho những lần đến đầu tiên một cách đơn giản Nếu ứng dụng dành riêng của bạn chạy dưới mức độc lập đọc lặp lại, khách hàng quét cơ sở dữ liệu để hiển thị các phòng chưa thuê để họ đăng ký ngày thuê và đồng thời cung cấp cho bạn (người quản lý) để thay đổi trạng thái của phòng để cập nhật vào cơ sở dữ liệu khi mà thực hiện yêu cầu xử lý của khách hàng Tương tự, những khách hàng khác không thể thực hiện hay hủy bỏ giao dịch nếu như một phòng nào đó đã được đăng ký thuê rồi Tuy nhiên bạn có thể cho phép thay đổi giá phòng cho bất kỳ phòng nào khi mà khách hàng chưa đăng ký thuê phòng Điều đó có nghĩa là, các khách hàng khác có thể thực hiện hay hủy bỏ việc đặt phòng cho bất kỳ phòng nào trong khi phòng đó chưa được đăng ký thuê Đặc trưng này được mô tả ở trong hình 2

Trang 14

dư thừa và không lặp lại Khi mức độc lập này được sử dụng chỉ các dòng được khôi phục chính xác hoặc được sửa chữa bởi chính phiên làm việc đó được khóa lại Vì vậy, nếu phiên làm việc quét 1,000 dòng để khôi phục 10 dòng, khóa chỉ yêu cầu và nắm giữ 10 dòng đã được khôi phục đó chứ không phải khóa hết 1,000 dòng đã quét Với kết quả này, nếu cùng câu lệnh SELECT được thực hiện hai hay nhiều lần trong cùng một phiên làm việc thì tập kết quả có thể không giống nhau cho mỗi lần thực hiện

Trang 15

Khi với mức độc lập đọc lặp lại, phiên làm việc được chạy dưới mức độc lập đọc

ổn định có thể khôi phục tập các hàng và thực thi bất kỳ thao tác xử lý nào trong

số đó cho đến khi bị ngắt Các phiên làm việc được ngăn lại từ thực thi cập nhật hay xử lý xóa có thể bị ảnh hưởng bởi tập các hàng được khôi phục từ chính phiên làm việc cũng như do phiên làm việc tồn tại, tuy nhiên các phiên làm việc khác có thể thực thi việc chèn vào các thao tác xử lý Nếu một dòng được chèn vào phù hợp với điều kiện lựa chọn của truy vấn bởi chính phiên làm việc xử lý đó thì các dòng này được xuất hiện như các dòng ảo trong tập dữ liệu của chuỗi kết quả Sự thay đổi này làm cho các dòng khác của các phiên làm việc khác không thể được

xử lý cho đến khi dòng đang xử lý được thực hiện

Mức độc lập đọc ổn định thay đổi cách đặt phòng khác sạn của bạn như thế nào? Khi khách hàng quét cơ sở dữ liệu để xem danh sách các phòng còn trống để đặt phòng bạn sẽ có thể thay đổi trạng thái cho bất kỳ phòng nào không có trong danh sách của khách hàng đó Ngược lại, các khách hàng khác sẽ không thể thực hiện hoặc hủy bỏ việc đặt chỗ của khách hàng khác đã đặt từ đầu nếu cùng một truy vấn giống vậy đã được chạy lần nữa Nếu khách hàng đầu tiên thực hiện truy vấn

để tìm phòng trống để đặt phòng trong cùng một ngày thì danh sách danh sách có thể chứa phòng đặt mới và/hoặc phòng đó không được đặt cho lần đầu tiên đăng

ký Đặc tính này được mô tả trong Hình 3

Trang 16

Hình 3 Ví dụ của mức độc lập đọc ổn định

Mức độc lập của tham khảo ổn định (Cursor)

Mức độ độc lập thao khảo ổn định là rất thú vị trong cách độc lập tác dụng của một phiên làm việc tới các tác dụng của một phiên làm việc khác Nó cung cấp khả năng đọc các bản ghi thừa tuy nhiên trường hợp đọc các bản ghi không có khả năng lặp lại và bản ghi ảo vẫn có thể có khả năng xảy ra Điều đó bởi vì trong hầu hết các trường hợp mức độ độc lập tham khảo ổn định chỉ khóa hàng đang được tham chiếu bởi con trỏ soạn thảo đó là hàng được mô tả và mở bởi chính phiên làm việc đang xử lý

Khi một phiên làm việc sử dụng mức độc lập tham khảo ổn định để khôi phục hàng từ bảng thông qua con trỏ khi đó không thể có phiên làm việc nào có thể cập nhật hoặc xóa dòng mà con trỏ đang được đặt trong đó Tuy nhiên, các phiên làm

Trang 17

việc khác có thể thêm hàng mới vào bảng cũng như cũng có thể cập nhật hoặc xóa các dòng ở vị trí bên phía kia của các dòng đã được khóa - các dòng đã bị khóa không thể truy cập đến bằng cách sử dụng chỉ mục Mỗi khi được yêu cầu, dòng khóa sẽ tồn tại trong quá trình cho đến khi con trở được thay thế hoặc cho đến phiên làm việc bị ngắt (Nếu con trỏ được thay thế vị trí, khóa được cầm trên hàng trước được giải phóng và khóa mới được yêu cầu cho hàng mà con trỏ đang đặt tại

vị trí đó) Hơn thế, nếu phiên làm việc đang làm việc thực hiện sửa bất kỳ hàng nào được khôi phục thì các phiên làm việc khác cũng không được phép cập nhật hoặc xóa hàng đó cho đến khi chính phiên làm việc đó ngắt thậm chí con trỏ soạn thảo có thể cũng không được đặt trên chính dòng được sửa chữa Như là các mức độc lập đọc lặp lại và các mức độc lập đọc ổn định, các phiên làm việc sử dụng mức độc lập tham khảo ổn định (được cho là mặc định sử dụng) sẽ không nhìn thấy sự thay đổi của các hàng khác bởi các phiên làm việc khác cho đến khi những thay đổi này được thực hiện hoàn thành

Nếu chương trình đặt phòng khách sạn đang chạy dưới mức độ độc lập tham khảo

ổn định thì thao tác xử lý nào được thực hiện Khi khách hàng duyệt qua cơ sở dữ liệu để có được danh sách các phòng trống để đặt phòng và sau đó hiển thị thông tin về mỗi phòng trong danh sách đảm bảo mỗi phòng được đăng ký tại mỗi thời điểm khác nhau khi đó bạn có thể thay đổi thông tin cho bất kỳ phòng nào trong

khách sạn ngoại trừ phòng mà khách hàng đang xem tại vị trí hiện tại (để xác định

ngày đặt phòng) Ngược lại, các khách hàng khác sẽ có thể tạo ra hoặc hủy bỏ việc

đặt phòng cho bất kỳ phòng nào trong khách sạn ngoại trừ phòng mà khách hàng

đang tìm kiếm (để xác định ngày đặt) Tuy nhiên, không phải bạn hoặc khách hàng khác sẽ có thể thực hiện bất kỳ cái gì với phòng mà khách hàng đầu tiên đang tìm kiếm Khi khách hàng đầu tiên hiển thị thông tin về phòng khác trong danh sách, bạn và các khách hàng khác sẽ có thể sửa chữa phòng mà người khách đầu tiên đã tìm kiếm; Tuy nhiên không một ai sẽ có thể được phép để thay đổi phòng mà khách hàng đầu tiên đang tìm kiếm Vấn đề này được thể hiện trong Hình 4

Trang 18

Hình 4 Ví dụ của mức độc lập tham chiếu ổn định

Mức độc lập của đọc không ràng buộc

Mức độc lập đọc không ràng buộc là mức độc lập cho phép ít hạn chế nhất Trong thực tế, khi mức độc lập này được sử dụng các hàng được khôi phục bởi phiên làm việc chỉ được khóa nếu các phiên làm việc cố gắng làm giảm hoặc thay đổi bảng chứa các hàng được khôi phục Bởi vì các hàng thường không được mở khóa khi

mà mức độc lập này được sử dụng khi đó các bản ghi đọc thừa, đọc không lặp lại

và được giả lập có thể xảy ra Vì thế, mức độc lập đọc không ràng buộc là kiểu cơ bản được sử dụng cho các phiên làm việc cho phép truy cập các bảng chỉ đọc và hiển thị và cho phép các phiên làm việc thực thi các lệnh SELECT để dữ liệu không ràng buộc từ các phiên làm việc khác sẽ không có bất lợi tương ứng

Trang 19

Khi đó, phiên làm việc chạy dưới mức độc lập đọc không ràng buộc có thể nhìn thấy sự thay đổi đến các hàng bởi các phiên làm việc khác trước khi các thay đổi này được thực hiện đầy đủ Tuy nhiên, mỗi một phiên làm việc có thể hoặc nhìn thấy hoặc không nhìn thấy bảng, nội dung và các chỉ số cái mà đã được làm yếu đi; phiên làm việc sử dụng đọc không ràng buộc sẽ chỉ đọc những cái gì mà đối tượng của nó không tồn tại lâu dài khi mà phiên làm việc thực hiện làm yếu đi được thực hiện hoàn thành (Có một chú ý rằng khi phiên làm việc chạy trong mức độc lập không ràng buộc mà sử dụng chế độ cập nhật con trỏ phiên làm việc sẽ thu được hiệu quả nếu đang chạy dưới chế độ độc lập tham khảo ổn định và sự bắt buộc của mức độ độc lập tham khảo ổn định được áp dụng)

Vậy áp dụng mức độc lập đọc không ràng buộc như thế nào vào ứng dụng đặt chỗ phòng khách sạn của bạn Bây giờ, khi khách hàng duyệt cơ sở dữ liệu để có được danh sách các phòng để có thể đặt chỗ bạn sẽ có thể thực hiện thay đổi giá cho bất

kỳ phòng nào trong khách sạn trong bất kỳ ngày nào Ngược lại, các khách hàng khác có thể thực hiện hoặc hủy bỏ đặt chỗ cho bất kỳ phòng nào trong khách sạn bao gồm cả phòng mà khách hàng đang tìm kiếm Thêm vào đó, danh sách các phòng cho khách hàng đầu tiên có thể chứa các bản ghi của các phòng mà các khách hàng khác đang xử lý để đặt chỗ và các phòng này thực sự là không có giá trị Đặc tính này được mô phỏng trong Hình 5

Trang 20

Hình 5 Ví dụ của mức độc lập đọc không ràng buộc

Lựa chọn mức độc lập thích hợp

Mức độc lập được sử dụng có thể ảnh hưởng như thế nào để hỗ trợ giải quyết vấn

đề mâu thuẫn cơ sở dữ liệu và thực hiện các ứng dụng mâu thuẫn ra sao Đơn giản như có nhiều hạn chế khi mức độc lập được sử dụng ví dụ như vẫn còn một chút mâu thuẫn - đó là sự thực hiện cho một số ứng dụng có thể làm giảm hiệu quả khi

họ phải đợi để khóa trên các nguồn để phát hành Vì vậy bạn phải quyết định xem mức độ độc lập nào được sử dụng? Cách tốt nhất là xác định các kiểu của trường hợp đặc biệt có thể không được chấp nhận và sau đó lựa chọn mức độc lập thích hợp để ngăn chặn các trường hợp đặc biệt này xảy ra:

 Sử dụng mức độc lập đọc lặp lại nếu bạn đang thực thi một lượng lớn các truy vấn và bạn không muốn các phiên làm việc có thể xảy ra đồng thời để

Ngày đăng: 07/08/2014, 09:23

HÌNH ẢNH LIÊN QUAN

Hình 1. So sánh sự giữa phiên làm việc thành công và không thành công - Chuẩn bị cho kỳ thi 730 cơ bản về DB2 9, Phần 6: Nhất quán dữ liệu ppt
Hình 1. So sánh sự giữa phiên làm việc thành công và không thành công (Trang 9)
Hình 2. Ví dụ của mức độc lập đọc lặp lại - Chuẩn bị cho kỳ thi 730 cơ bản về DB2 9, Phần 6: Nhất quán dữ liệu ppt
Hình 2. Ví dụ của mức độc lập đọc lặp lại (Trang 14)
Bảng 1. Các trạng thái khóa - Chuẩn bị cho kỳ thi 730 cơ bản về DB2 9, Phần 6: Nhất quán dữ liệu ppt
Bảng 1. Các trạng thái khóa (Trang 25)
Hình 6. Các khóa cần thiết như thế nào - Chuẩn bị cho kỳ thi 730 cơ bản về DB2 9, Phần 6: Nhất quán dữ liệu ppt
Hình 6. Các khóa cần thiết như thế nào (Trang 29)
Hình 7. Vòng khóa chết - Chuẩn bị cho kỳ thi 730 cơ bản về DB2 9, Phần 6: Nhất quán dữ liệu ppt
Hình 7. Vòng khóa chết (Trang 35)

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm