Tải bản đầy đủ (.pdf) (12 trang)

Xử lý truy vấn và quản lý giao tác trong cơ sở dữ liệu

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (328.09 KB, 12 trang )

<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1>

ĐẠI HỌC QUỐC GIA HÀ NỘI


<b>TRƯỜNG ĐẠI HỌC CÔNG NGHỆ </b>


<b>Đào Thị Thu Vân </b>


<i><b>XỬ LÝ TRUY VẤN VÀ QUẢN LÝ GIAO TÁC </b></i>



<b>LUẬN VĂN THẠC SĨ </b>


</div>
<span class='text_page_counter'>(2)</span><div class='page_container' data-page=2>

<b>LỜI CẢM ƠN </b>



</div>
<span class='text_page_counter'>(3)</span><div class='page_container' data-page=3>

<b>MỤC LỤC </b>



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 ... <b>Error! Bookmark not defined.</b>
1.2.1 Sắp xếp ngoài ... <b>Error! Bookmark not </b>
<b>defined.</b>


1.2.2 Thùc thi phÐp chän (SELECT) <b>Error! Bookmark </b>
<b>not defined.</b>


1.2.3 Thùc thi phÐp nèi (JOIN) ... <b>Error! Bookmark </b>
<b>not defined.</b>



1.2.4 ... Thực thi phép chiếu và các phép toán tập
hợp <b>Error! Bookmark not defined.</b>


1.2.5 ... Thực thi các phép toán kết hợp


<b>Error! Bookmark not defined.</b>


1.2.6 ... Thùc thi phÐp nèi ngoµi - Outer Join


<b>Error! Bookmark not defined.</b>


1.2.7 ... C¸c phÐp to¸n kÕt hợp sử dụng đ-ờng ống


<b>Error! Bookmark not defined.</b>


1.3 S dụng các luật dự đoán trong tối -u truy
vấn ... <b>Error! Bookmark not defined.</b>
1.3.1 ... Các ký hiệu với cây truy vấn và đồ thị
truy vấn ... <b>Error! Bookmark not defined.</b>
1.3.2 ... Tối -u kinh nghiệm của các cây truy vấn


<b>Error! Bookmark not defined.</b>


</div>
<span class='text_page_counter'>(4)</span><div class='page_container' data-page=4>

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 . <b>Error! Bookmark not </b>
<b>defined.</b>


1.4.1 ... Các thành phÇn chi phÝ cho viƯc thùc
thi truy vÊn ... <b>Error! Bookmark not defined.</b>
1.4.2 ... Th«ng tin danh mơc sử dụng trong các hàm


giá <b>Error! Bookmark not defined.</b>


1.4.3 . Ví dụ của các hàm giá đối với phép SELECT


<b>Error! Bookmark not defined.</b>


1.4.4 ... Ví dụ của các hàm giá đối với phép JOIN


<b>Error! Bookmark not defined.</b>


1.4.5 . C¸c truy vÊn cã quan hƯ và thứ tự nối phức
tạp <b>Error! Bookmark not defined.</b>


1.4.6 VÝ dơ minh ho¹ cho việc tối -u truy
vấn dựa trên giá .... <b>Error! Bookmark not defined.</b>
1.5 Tèi -u truy vÊn ng÷ nghÜa <b>Error! Bookmark not </b>


<b>defined.</b>


1.6 Tæng kÕt ... <b>Error! Bookmark not defined.</b>


Ch-ơng 2 xử lý giao tác ... <b>Error! Bookmark not </b>
<b>defined.</b>


2.1 Giíi thiƯu vỊ xư lý giao t¸c ... <b>Error! Bookmark </b>
<b>not defined.</b>


2.1.1 Hệ thống đơn ng-ời dùng - hệ thống đa


ng-ời dùng ... <b>Error! Bookmark not defined.</b>


2.1.2 Các giao tác, thao tác đọc - ghi và các
vùng đệm DBMS ... <b>Error! Bookmark not defined.</b>
2.1.3 Tại sao điều khiển đồng thời là cần thiết


</div>
<span class='text_page_counter'>(5)</span><div class='page_container' data-page=5>

2.1.4 Tại sao khôi phục là cần thiết ... <b>Error! </b>
<b>Bookmark not defined.</b>


2.2 Các khái niệm hệ thống và giao tác ... <b>Error! </b>
<b>Bookmark not defined.</b>


2.2.1 Các trạng thái giao tác và các phép toán
bổ xung ... <b>Error! Bookmark not defined.</b>
2.2.2 File log hÖ thèng ... <b>Error! Bookmark not </b>
<b>defined.</b>


2.2.3 Điểm xác nhận của một giao tác ... <b>Error! </b>
<b>Bookmark not defined.</b>


2.3 Các đặc tính mong muốn của giao tỏc ... <b>Error! </b>
<b>Bookmark not defined.</b>


2.4 Lịch biểu và sự khôi phục .. <b>Error! Bookmark not </b>
<b>defined.</b>


2.4.1 Lịch biểu cđa c¸c giao t¸c . <b>Error! Bookmark </b>
<b>not defined.</b>


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 ... <b>Error! Bookmark not defined.</b>
2.5 Xếp thứ tự của lịch biểu ... <b>Error! Bookmark not </b>



<b>defined.</b>


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 ... <b>Error! </b>
<b>Bookmark not defined.</b>


2.5.2. Kiểm tra thứ tự xung đột của một lịch
biểu <b>Error! Bookmark not defined.</b>


2.5.3 Sư dơng tÝnh thø tù .... <b>Error! Bookmark not </b>
<b>defined.</b>


2.5.4 T-ơng đ-ơng khung nhìn và trËt tù khung
nh×n <b>Error! Bookmark not defined.</b>


</div>
<span class='text_page_counter'>(6)</span><div class='page_container' data-page=6></div>
<span class='text_page_counter'>(7)</span><div class='page_container' data-page=7>

<b>MỞ ĐẦU </b>



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 <i><b>“xử lý truy vấn và quản lý các giao tác”</b></i>.


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 qn có thể khơng cịn đƣợc bảo tồ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.


</div>
<span class='text_page_counter'>(8)</span><div class='page_container' data-page=8>

CHƢƠNG 1<b> XỬ LÝ VÀ TỐI ƯU TRUY VẤN</b>


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.


</div>
<span class='text_page_counter'>(9)</span><div class='page_container' data-page=9>

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.


<b>1.1 Chuyển các truy vấn SQL thành đại số quan hệ </b>


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
các khối truy vấn, tạo nên các đơn vị cơ sở mà có thể chuyển đổi thành những
phép tố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à


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


</div>
<span class='text_page_counter'>(10)</span><div class='page_container' data-page=10>

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


ADDESS SEX SALAR


Y



DNO


DEPARTMENT


DNAME DNUMBER MGRSSN MGRSTARTDATE


PROJECT


PNAME PNUMBER PLOCATION DNUM


WORKS-ON


ESSN PNO HOURS


<i>Bảng 1.1 Các quan hệ</i>


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
SEX: giới tính của nhân viên


SALARY: mức lƣơng của từng nhân viên



DNO: mã số phịng ban mà nhân viên đó làm việc


</div>
<span class='text_page_counter'>(11)</span><div class='page_container' data-page=11>

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)
FROM EMPLOYEE


WHERE DNO=5
Và khối ngoài là:


SELECT LNAME, FNAME
FROM EMPLOYEE
WHERE SALARY > c


</div>
<span class='text_page_counter'>(12)</span><div class='page_container' data-page=12>

<b>TÀI LIỆU THAM KHẢO </b>


<i><b>Tài liệu tiếng Việt: </b></i>


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


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



[3]. Phạm Hữu Khang, <i>SQL Server 2000</i>, NXB Giáo Dục, 2002


[4]. Trần Đức Quang, Hồ Thuần, <i>Nguyên lý các hệ cơ sở dữ liệu và cơ sở </i>


<i>tri thức</i>, NXB Thống Kê, 1998


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


<i><b>Tài liệu tiếng Anh: </b></i>


[6]. Elmasri, Navathe, <i>Fundamentals of Database systems </i>


[7]. Jarke, M and J.Koch (1984). <i>Query optimization in database </i>


<i>systems</i>, Computing surveys 16:2,pp.1 11-152.


[8]. Keller, A. (1985), <i>Algorithms for transtating view updates into </i>


<i>database for view involving selections, projections and joins</i>, Pro.,


Fourth ACM Symp. on Principles of Database Systems, pp.
154-163.


</div>

<!--links-->

×