Việc xử lý các truy vấn, quản lý giao tác là hai chức năng quan trọng của một hệ quản trị cơ sở dữ liệu.. Thông qua việc nghiên cứu một số tài liệu khoa học có liên quan, trong luận văn
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Đào Thị Thu Vân
XỬ LÝ TRUY VẤN VÀ QUẢN LÝ GIAO TÁC
LUẬN VĂN THẠC SĨ
Hà Nội – 2005
Trang 2LỜI CẢM ƠN
Em xin bày tỏ lòng biết ơn sâu sắc tới Thầy hướng dẫn
TS Nguyễn Tuệ đã có những chỉ dẫn quý báu trong quá trình
em làm luận văn Em xin chân thành cảm ơn các Thầy Cô thuộc Trường Đại học công nghệ đã tận tình giảng dạy, truyền đạt kiến thức trong suốt thời gian học tập nghiên cứu tại trường Cuối cùng xin bày tỏ lòng cảm ơn tới những người thân trong gia đình, bạn bè đã động viên và giúp đỡ để tôi hoàn thành bản luận văn này
Trang 3MỤC LỤC
Mở đầu 6 ch-ơng 1 xử lý và tối -u truy vấn 7 1.1 Chuyển các truy vấn SQL thành đại số quan
hệ 8 1.2 Các thuật toán cơ bản thực hiện phép toán
truy vấn Error! Bookmark not defined.
1.2.1 Sắp xếp ngoài Error! Bookmark not defined.
1.2.2 Thực thi phép chọn (SELECT) Error! Bookmark
not defined.
1.2.3 Thực thi phép nối (JOIN) Error! Bookmark not defined.
1.2.4 Thực thi phép chiếu và các phép toán tập
1.2.5 Thực thi các phép toán kết hợp
Error! Bookmark not defined.
1.2.6 Thực thi phép nối ngoài - Outer Join
Error! Bookmark not defined.
1.2.7 Các phép toán kết hợp sử dụng đ-ờng ống
Error! Bookmark not defined.
1.3 Sử dụng các luật dự đoán trong tối -u truy
vấn Error! Bookmark not defined.
1.3.1 Các ký hiệu với cây truy vấn và đồ thị truy vấn Error! Bookmark not defined.
1.3.2 Tối -u kinh nghiệm của các cây truy vấn
Error! Bookmark not defined.
Trang 41.3.3. Chuyển cây truy vấn thành ph-ơng án thực thi truy vấn Error! Bookmark not defined.
1.4 Sử dụng -ớc l-ợng chọn lọc và -ớc l-ợng chi
phí trong tối -u truy vấn Error! Bookmark not defined.
1.4.1 Các thành phần chi phí cho việc thực thi truy vấn Error! Bookmark not defined.
1.4.2 Thông tin danh mục sử dụng trong các hàm
1.4.3 Ví dụ của các hàm giá đối với phép SELECT
Error! Bookmark not defined.
1.4.4 Ví dụ của các hàm giá đối với phép JOIN
Error! Bookmark not defined.
1.4.5 Các truy vấn có quan hệ và thứ tự nối phức
1.4.6 Ví dụ minh hoạ cho việc tối -u truy vấn dựa trên giá Error! Bookmark not defined.
1.5 Tối -u truy vấn ngữ nghĩa Error! Bookmark not
defined.
1.6 Tổng kết Error! Bookmark not defined.
Ch-ơng 2 xử lý giao tác Error! Bookmark not defined.
2.1 Giới thiệu về xử lý giao tác Error! Bookmark
not defined.
2.1.1 Hệ thống đơn ng-ời dùng - hệ thống đa
ng-ời dùng Error! Bookmark not defined.
Trang 52.1.2 Các giao tác, thao tác đọc - ghi và các vùng đệm DBMS Error! Bookmark not defined.
2.1.3 Tại sao điều khiển đồng thời là cần thiết
Error! Bookmark not defined.
2.1.4 Tại sao khôi phục là cần thiết Error! Bookmark not defined.
2.2 Các khái niệm hệ thống và giao tác Error!
Bookmark not defined.
2.2.1 Các trạng thái giao tác và các phép toán
bổ xung Error! Bookmark not defined.
2.2.2 File log hệ thống Error! Bookmark not defined.
2.2.3 Điểm xác nhận của một giao tác Error! Bookmark not defined.
2.3 Các đặc tính mong muốn của giao tác Error!
Bookmark not defined.
2.4 Lịch biểu và sự khôi phục Error! Bookmark not
defined.
2.4.1 Lịch biểu của các giao tác Error! Bookmark not defined.
2.4.2 Miêu tả đặc tính các lịch biểu dựa trên việc khôi phục Error! Bookmark not defined.
2.5 Xếp thứ tự của lịch biểu Error! Bookmark not
defined.
2.5.1 Các lịch biểu theo thứ tự, không theo thứ
tự và lịch biểu có thứ tự xung đột Error! Bookmark not defined.
2.5.2 Kiểm tra thứ tự xung đột của một lịch
biểu Error! Bookmark not defined.
Trang 62.5.3 Sö dông tÝnh thø tù Error! Bookmark not defined.
2.5.4 T-¬ng ®-¬ng khung nh×n vµ trËt tù khung
nh×n Error! Bookmark not defined.
2.5.5 C¸c kiÓu t-¬ng ®-¬ng kh¸c cña c¸c lÞch
biÓu Error! Bookmark not defined.
2.6 Tæng kÕt Error! Bookmark not defined.
KÕt luËn Error! Bookmark not defined.
Tµi liÖu tham kh¶o 11
Trang 7MỞ ĐẦU
Khi dữ liệu được lưu trữ trên máy tính thì việc sử dụng nó như thế nào
để có hiệu quả là một thách thức đối với người sử dụng Để khai thác một cơ
sở dữ liệu tốt cần phải có một hệ quản trị cơ sở dữ liệu tốt Việc xử lý các truy vấn, quản lý giao tác là hai chức năng quan trọng của một hệ quản trị cơ sở dữ liệu Tìm hiểu về lý thuyết và thực tiễn của hai chức năng này có ý nghĩa trong việc xây dựng các hệ quản trị cơ sở dữ liệu Thông qua việc nghiên cứu một số tài liệu khoa học có liên quan, trong luận văn này chúng tôi đã đi sâu
tìm hiểu các vấn đề với đề tài “xử lý truy vấn và quản lý các giao tác”
Luận văn bao gồm hai chương:
Chương 1: Xử lý và tối ưu truy vấn
Một truy vấn trên cơ sở dữ liệu là một biểu thức đại số quan hệ, thực hiện một loạt các thao tác trên cơ sở dữ liệu quan hệ để lấy ra các thông tin cần thiết cho việc quản lý Nghiên cứu về xử lý và tối ưu truy vấn là nghiên cứu các thuật toán thực hiện các phép toán đại số quan hệ cũng như tìm cách thực hiện biểu thức đại số quan hệ theo một trật tự nào đó để có câu trả lời nhanh nhất
Chương 2: Quản lý giao tác
Quản lý giao tác là rất cần thiết, đặc biệt khi các giao tác xẩy ra đồng thời và có cạnh tranh nhau một số khoản mục dữ liệu trong cơ sở dữ liệu, tính nhất quán có thể không còn được bảo toàn nữa Do vậy hệ thống cần điều khiển sự tương tác giữa các giao tác đồng thời
Do kinh nghiệm làm việc với cơ sở dữ liệu còn ít, chắc chắn trong luận văn còn nhiều thiếu sót Chúng tôi chân thành mong được các thầy, các cô, và bạn bè đóng góp ý kiến
Trang 8CHƯƠNG 1 XỬ LÝ VÀ TỐI ƯU TRUY VẤN
Trong chương này trình bầy các kỹ thuật mà hệ quản trị cơ sở dữ liệu (DBMS) sử dụng để xử lý, tối ưu hoá và thực thi các truy vấn bậc cao Một truy vấn được trình bầy trong một ngôn ngữ bậc cao, như SQL, đầu tiên phải được kiểm tra, phân tích và xác nhận tính hợp lệ Bộ quét sẽ xác định các dấu hiệu ngôn ngữ, như các từ khóa SQL, tên các thuộc tính và tên các quan hệ trong nội dung câu truy vấn, trong khi đó bộ phân tích sẽ kiểm tra cú pháp của truy vấn để xác định xem nó có được trình bầy phù hợp với các luật cú pháp của ngôn ngữ truy vấn hay không Một truy vấn cũng phải được xác nhận tính hợp lệ bằng cách kiểm tra tất cả các tên quan hệ và thuộc tính là hợp lệ, và các tên có ý nghĩa trong lưu đồ cơ sở dữ liệu cụ thể được truy vấn Sau đó một biểu diễn bên trong của truy vấn được tạo ra, thường là như một cấu trúc dữ liệu cây gọi là một cây truy vấn Cũng có thể biểu diễn truy vấn bằng cách sử dụng một cấu trúc dữ liệu đồ thị gọi là đồ thị truy vấn Sau đó DBMS sẽ phải đưa ra một chiến lược thực hiện để lấy ra kết quả của truy vấn từ các file cơ
sở dữ liệu Một truy vấn thường có nhiều chiến lược thực hiện, và quá trình chọn một chiến lược phù hợp để xử lý một truy vấn gọi là tối ưu truy vấn [1,
3, 4, 5, 6, 7]
Hình 1.1 thể hiện các bước khác nhau của việc xử lý một truy vấn bậc cao Bộ tối ưu truy vấn có nhiệm vụ tạo ra một phương án thực hiện và bộ tạo
mã tạo ra chương trình để thực hiện phương án đó Bộ xử lý cơ sở dữ liệu thời gian chạy có nhiệm vụ chạy chương trình truy vấn trong kiểu thông dịch hoặc biên dịch để tạo ra kết quả của truy vấn Nếu có một lỗi chạy chương trình được tạo ra thì bộ xử lý cơ sở dữ liệu thời gian chạy sẽ sinh ra một thông báo lỗi
Thuật ngữ tối ưu được sử dụng ở đây là không chính xác vì trong một vài trường hợp, phương án thực hiện được lựa chọn không phải là chiến lược tốt nhất, nó chỉ là một chiến lược hiệu quả và hợp lý cho việc thực hiện truy
Trang 9được cài đặt như thế nào và ngay cả nội dung của các file, những thông tin đó
có thể không có trong từ điển hệ quản trị cơ sở dữ liệu Vì vậy, lập kế hoạch của một chiến lược thực hiện là chính xác hơn tối ưu truy vấn
1.1 Chuyển các truy vấn SQL thành đại số quan hệ
Một truy vấn SQL đầu tiên chuyển đổi thành một biểu thức đại số quan
hệ mở rộng tương đương, được biểu diễn như là cấu trúc dữ liệu cây truy vấn,
và sau đó được tối ưu Thông thường các truy vấn SQL được phân tích thành
Truy vÊn viÕt trong ng«n ng÷ bËc cao
D¹ng biÓu diÔn bªn trong
Scanning, parsing, validating
Query Optimiser
Runtime Database Processor
Query Code Generator
Ph-¬ng ¸n thùc hiÖn
Ch-¬ng tr×nh thùc hiÖn truy vÊn
KÕt qu¶ cña truy vÊn
H×nh 1.1 C¸c b-íc ®iÓn h×nh khi xö lý
mét truy vÊn bËc cao
Trang 10phép toán đại số và đƣợc tối ƣu Một khối truy vấn chứa một biểu thức SELECT – FROM – WHERE đơn và có thể có các mệnh đề Group by và Having nếu chúng là một phần của biểu thức Vì vậy các truy vấn đƣợc lồng bên trong một truy vấn đƣợc xác định nhƣ các khối truy vấn riêng rẽ [6]
Xét các quan hệ sau: EMPLOYEE, DEPARTMENT, WORKS-ON và PROJECT
EMPLOYEE
FNAME LNAME SSN
BDATE
Y
DNO
DEPARTMENT
DNAME DNUMBER MGRSSN MGRSTARTDATE
PROJECT
PNAME PNUMBER PLOCATION DNUM
WORKS-ON
Bảng 1.1 Các quan hệ
Trong đó:
Quan hệ EMPLOYEE chứa thuộc tính của các nhân viên:
FNAME: tên của các nhân viên LNAME: họ và tên đệm của nhân viên SSN: mã nhân viên
BDATE: ngày sinh của mỗi nhân viên ADDESS: địa chỉ của nhân viên
Trang 11DNO: mó số phũng ban mà nhõn viờn đú làm việc
Quan hệ DEPARTMENT chứa thụng tin về cỏc phũng ban:
DNAME: tờn của mỗi phũng ban
DNUMBER: mó số của mỗi phũng ban MGRSSN: mó số của người quản lý từng phũng MGRSTARTDATE: ngày bắt đầu làm quản lý của người quản lý phũng ban
Quan hệ PROJECT chứa thụng tin về cỏc dự ỏn:
PNAME: tờn của dự ỏn PNUMBER: mã số dự án PLOCATION: nơi thực hiện dự án DNUM: mã số của phòng thực hiện dự án Quan hệ WORKS-ON chứa thông tin về thời gian làm việc của mỗi nhân viên:
ESSN: mã số của nhân viên PNO: mã số dự án mà nhân viên đó tham gia
HOURS: số giờ mà nhân viên đó thực hiện Xét truy vấn SQL sau trên quan hệ EMPLOYEE trong bảng 1.1
SELECT LNAME, FNAME
FROM EMPLOYEE
WHERE SALARY > (SELECT MAX(SALARY)
FROM EMPLOYEE WHERE DNO=5);
Truy vấn này chứa một truy vấn con lồng bên trong và vì vậy có thể đ-ợc tách thành 2 khối:
Khối trong là:
SELECT MAX (SALARY)
Trang 12TÀ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 [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
T2