Sử dụng tính thứ tự

Một phần của tài liệu Xử lý truy vấn và quản lý giao tác trong cơ sở dữ liệu (Trang 78)

Một lịch biểu theo thứ tự xung đột là khác so với lịch biểu có thứ tự, tuy nhiên một lịch biểu theo thứ tự thể hiện việc xử lý không hiệu quả bởi vì nó không cho phép có sự đan xen của các thao tác từ các giao tác khác nhau. Điều này có thể dẫn tới hiệu quả sử dụng CPU thấp trong khi một giao tác thực hiện thao tác I/O, hoặc chờ các giao tác khác kết thúc và do đó làm chậm việc xử lý. Một lịch biểu theo thứ tự xung đột có lợi khi thực thi đồng thời nhƣng vẫn đảm bảo tính đúng đắn. Việc đan xen của các thao tác từ các giao tác đồng thời đƣợc xác định bởi bộ lập lịch hệ điều hành. Bộ lập lịch hệ điều hành chỉ định rõ nguồn tài nguyên cho tất cả các quá trình. Các nhân tố nhƣ hệ thống, thời gian xem xét một giao tác, và các quyền ƣu tiên của quá trình góp phần vào thứ tự của các thao tác trong một lịch biểu. Do đó, rất khó xác định làm thế nào để các thao tác của lịch biểu sẽ đƣợc xen kẽ trƣớc khi đảm bảo thứ tự xung đột.

Vấn đề là khi các giao tác đƣợc chấp nhận một cách liên tục lên hệ thống, nó rất khó xác định đƣợc khi nào một lịch biểu đƣợc bắt đầu và khi nào nó kết thúc. Tính tuần tự có thể đƣợc áp dụng để giải quyết vấn đề này bằng việc chỉ xem xét các phƣơng án xác nhận của một lịch biểu S. Phƣơng án xác nhận C(S) của một lịch biểu S chỉ bao gồm các thao tác trong S thuộc các giao tác đã xác nhận. Nhƣ vậy định nghĩa một lịch biểu S đƣợc xem là có thứ

tự xung đột nếu phƣơng án xác nhận C(S) trong S tƣơng đƣơng với một số lịch biểu theo thứ tự, bởi vì chỉ các giao tác đã xác nhận mới đƣợc DBMS đảm bảo.

2.5.4 Tương đương khung nhìn và trật tự khung nhìn

Hai lịch biểu S và S‟ đƣợc gọi là tƣơng đƣơng khung nhìn nếu thoả mãn 3 điều kiện sau [1, 4, 6]:

1. Hai lịch biểu có cùng tập giao tác thì chúng sẽ bao gồm các thao tác của giao tác đó.

2. Đối với bất kỳ thao tác ri(X) của Ti trong S, hoặc là đọc giá trị X đầu tiên, hoặc là đọc giá trị X khi đã đƣợc ghi bởi thao tác wj(X) của Tj. 3. Nếu thao tác wk(Y) của Tk là thao tác cuối cùng ghi mục Y trong S, thì

wk(Y) của Tk cũng phải là thao tác cuối cùng ghi mục Y của S‟.

Tƣơng đƣơng khung nhìn là nếu mỗi thao tác “read” của các giao tác cho kết quả giống nhau thì thao tác “write” trƣớc đó phải đƣa ra kết quả giống nhau. Do đó các thao tác đọc đƣợc coi là tƣơng đƣơng khung nhìn. Điều kiện 3 đảm bảo rằng thao tác ghi cuối cùng trên từng mục dữ liệu là nhƣ nhau trong cả 2 lịch biểu, do đó trạng thái cơ sở dữ liệu sẽ nhƣ nhau tại thời điểm kết thúc của cả 2 lịch biểu. Một lịch biểu S là theo thứ tự khung nhìn nếu nó là khung nhìn tƣơng đƣơng với một lịch biểu có thứ tự.

Các định nghĩa thứ tự xung đột và thứ tự khung nhìn là tƣơng tự nhau nếu thao tác “write” bị ràng buộc trên toàn bộ các giao tác trong lịch biểu. Tính toán một giá trị mới X là một hàm f(X) dựa vào giá trị cũ của X đƣợc đọc từ cơ sở dữ liệu. Tuy nhiên, định nghĩa của thứ tự khung nhìn ít khắt khe hơn so với thứ tự xung đột vì thao tác “write” không bị ràng buộc và có thể độc lập với giá trị cũ của nó từ cơ sở dữ liệu. Đây đƣợc gọi là một thao tác ghi ẩn, và nó đƣợc minh họa bởi lịch biểu Sg dƣới đây của 3 giao tác T1: r1(X); w1(X); T2: w2(X); và T3: w3(X):

Lịch biểu Sg theo thứ tự khung nhìn, bởi vì nó là tƣơng đƣơng khung nhìn với lịch biểu chứa T1, T2, T3. Tuy nhiên Sg không theo thứ tự xung đột, bởi vì nó không tƣơng đƣơng xung đột với bất kỳ lịch biểu có thứ tự nào. Nhƣ vậy bất kỳ lịch biểu theo thứ tự xung đột nào cũng theo thứ tự khung nhìn nhƣng ngƣợc lại thì không đúng, nhƣ ví dụ trên.

2.5.5 Các kiểu tương đương khác của các lịch biểu

Thứ tự của các lịch biểu đôi khi đƣợc xem là cứng nhắc để đảm bảo sự chính xác của việc thực thi đồng thời. Một số ứng dụng có thể đƣa ra các lịch biểu đúng mà nó thỏa mãn các điều kiện ít khắt khe hơn so với thứ tự xung đột hoặc thứ tự khung nhìn. Ví dụ giao tác áp dụng để gửi tiền và rút tiền với giá trị là số dƣ hiện tại của một tài khoản ở ngân hàng. Ý nghĩa của các thao tác nợ - có là cập nhật trừ đi hoặc thêm vào giá trị của dữ liệu. Bởi vì các phép cộng và trừ là giao hoán nên có thể đƣa ra các lịch biểu đúng mà chúng không theo thứ tự. Xét 2 giao tác sau, mỗi giao tác có thể đƣợc sử dụng để chuyển một lƣợng tiền giữa 2 tài khoản:

T1: r1(X); X:=X-10; w1(X); r1(Y); Y:=Y+10; w1(Y); T2: r2(Y); Y:=Y-20; w2(Y); r2(X); X:=X+20; w2(X); Và lịch biểu không theo thứ tự Sh đối với 2 giao tác sau: Sh: r1(X); w1(X); r2(Y); w2(Y); r1(Y); w1(Y); r2(X); w2(X);

Thứ tự thực thi tuần tự các thao tác không quan trọng miễn là các thao tác (đọc, cập nhật, ghi) đƣợc thực hiện liên tiếp bởi một giao tác đặc biệt Ti trên một mục riêng biệt I mà không bị gián đoạn bởi các thao tác xung đột. Do đó, lịch biểu Sh đƣợc xem là đúng thậm chí nó không theo thứ tự [6].

2.6 Tổng kết

Trong chƣơng này trình bầy việc xử lý giao tác. Đó là khái niệm của một giao tác cơ sở dữ liệu và các thao tác liên quan đến xử lý giao tác. Và so sánh các hệ thống đơn ngƣời dùng với hệ thống đa ngƣời dùng, sau đó đƣa ví dụ của việc làm thế nào để thực thi của các giao tác đồng thời trong một hệ thống đa ngƣời dùng có thể dẫn đến các kết quả và các giá trị cơ sở dữ liệu

chính xác. Đồng thời trình bầy các kiểu lỗi khác nhau có thể xảy ra trong khi thực thi giao tác.

Sau đó giới thiệu các trạng thái mà một giao tác phải có trong khi thực thi, và thảo luận một số khái niệm đƣợc sử dụng trong khôi phục và phƣơng pháp điều khiển đồng thời. File log hệ thống lƣu vết các lần truy nhập cơ sở dữ liệu, hệ thống sử dụng thông tin này đề khôi phục khi gặp lỗi. Một giao tác hoặc tiếp tục và tiến tới điểm xác nhận của nó hoặc gặp lỗi thì có thể phải khôi phục lại sau đó. Một giao tác xác nhận có những thay đổi đƣợc ghi trong cơ sở dữ liệu. Và một cái nhìn tổng quan về các tính chất mong muốn của các giao tác.

Tiếp đó là định nghĩa một lịch biểu nhƣ một thứ tự thực thi các thao tác của một số giao tác với khả năng xen kẽ và miêu tả đặc tính các lịch biểu. Định nghĩa sự tƣơng đƣơng của các lịch biểu cũng nhƣ các khái niệm của sự tƣơng đƣơng xung đột và tƣơng đƣơng khung nhìn.

KẾT LUẬN

Trong bản luận văn này, với mục đích chính là nghiên cứu xử lý truy vấn và quản lý giao tác, chúng tôi đã hoàn thành những phần việc sau:

1. Tìm hiểu những kiến thức cơ bản về cơ sở dữ liệu 2. Nghiên cứu sâu về xử lý truy vấn và quản lý giao tác

3. Tìm hiểu ngôn ngữ SQL để sử dụng cho các ví dụ minh hoạ. Nhƣ đã trình bầy trong luận văn, thực hiện một truy vấn là thực hiện một loạt các thao tác trên cơ sở dữ liệu để lấy ra những thông tin cần thiết. Trong quá trình thực hiện cần sử dụng một số thuật toán nhƣ sắp xếp, thực thi phép chiếu, phép chọn, phép nối... Nếu các phép toán này không đƣợc sử dụng tốt sẽ dẫn đến tốn rất nhiều thời gian xử lý và không gian lƣu trữ. Để khắc phục đƣợc hạn chế này trƣớc hết cần nghiên cứu kỹ về cơ sở dữ liệu để đƣa ra quyết định xem các truy vấn nên đƣợc tối ƣu hoá bằng kinh nghiệm hay sử dụng hàm giá hoặc tối ƣu nghữ nghĩa.

Hệ thống đa ngƣời dùng cho phép nhiều ngƣời có thể cùng truy cập đến một cơ sở dữ liệu. Đây là ƣu điểm, song cũng là nhƣợc điểm nếu có các giao tác thực hiện xen kẽ cùng truy nhập đến một khoản mục dữ liệu thì sẽ dẫn đến kết quả không chính xác. Để khắc phục điều này cần thiết phải có sự điều khiển đồng thời giữa các giao tác. Lịch biểu tƣơng đƣơng khung nhìn, tƣơng đƣơng xung đột, ... đều cho kết quả đúng.

Những gì trình bầy trong luận văn là rất nhỏ và do khả năng còn hạn chế nên chúng tôi không tránh khỏ những sai sót. Mong đƣợc thầy cô và bạn bè đóng góp ý kiến để bản luận văn này đƣợc hoàn thiện hơn. Trong thời gian tới, chúng tôi sẽ tiếp tục nghiên cứu và hoàn thiện để có đƣợc những ứng dụng cụ thể sử dụng trong thực tế.

TÀI LIỆU THAM KHẢO

Tài liệu tiếng Việt:

[1]. Nguyễn Kim Anh, Nguyên lý của các hệ cơ sở dữ liệu, NXB ĐH Quốc Gia Hà Nội, 2004

[2]. Trần Tiến Dũng, Giáo trình lý thuyết và thực hành ORACLE, NXB Giáo Dục, 2000

[3]. Phạm Hữu Khang, SQL Server 2000, NXB Giáo Dục, 2002 (adsbygoogle = window.adsbygoogle || []).push({});

[4]. Trần Đức Quang, Hồ Thuần, Nguyên lý các hệ cơ sở dữ liệu và cơ sở tri thức, NXB Thống Kê, 1998

[5]. Lê Tiến Vƣơng, Nhập môn cơ sở dữ liệu quan hệ, NXB Khoa Học và Kỹ Thuật, 1996

Tài liệu tiếng Anh:

[6]. Elmasri, Navathe, Fundamentals of Database systems

[7]. Jarke, M and J.Koch (1984). Query optimization in database systems, Computing surveys 16:2,pp.1 11-152.

[8]. Keller, A. (1985), Algorithms for transtating view updates into database for view involving selections, projections and joins, Pro., Fourth ACM Symp. on Principles of Database Systems, pp. 154- 163.

[9]. Swami, A. and A. Gupta (1988), Optimizing large join queries, ACM SIGMOD Intl. Conf. on Management of Data, pp. 8-17.

Một phần của tài liệu Xử lý truy vấn và quản lý giao tác trong cơ sở dữ liệu (Trang 78)