Thiết kế và quản trị cơ sở dữ liệu<br />
<br />
Tổ chức Index hiệu quả<br />
<br />
Vũ Tuyết Trinh<br />
trinhvt-fit@mail.hut.edu.vn<br />
Bộ môn Hệ thống thông tin, Viện CNTT&TT<br />
Đại học Bách Khoa Hà Nội<br />
<br />
Nội dung<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Vũ Tuyết Trinh<br />
<br />
Một sô kiểu truy vấn<br />
Đánh chỉ mục (mục tiêu)<br />
Tổ chức index<br />
Tổ chức dữ liệu trên đĩa<br />
Chi phí cho Index (tạo, duy trì, sử dụng)<br />
“Phân tán” dữ liệu<br />
<br />
1<br />
<br />
Thiết kế và quản trị cơ sở dữ liệu<br />
<br />
Một số kiểu truy vấn<br />
<br />
<br />
Truy vấn với điều kiện<br />
chính xác trên khóa<br />
<br />
SELECT balance<br />
FROM accounts<br />
WHERE number = 1023;<br />
<br />
<br />
<br />
Truy vấn với điều kiện<br />
trên thuộc tính bất kỳ<br />
<br />
SELECT balance<br />
FROM accounts<br />
WHERE branchnum = 100;<br />
<br />
<br />
<br />
Truy vấn với điều kiện<br />
trong khoảng<br />
<br />
SELECT number<br />
FROM accounts<br />
WHERE balance > 10000;<br />
SELECT *<br />
FROM employees<br />
WHERE name = „Jensen‟<br />
and firstname = „Carl‟<br />
3<br />
and age < 30;<br />
<br />
Một số kiểu truy vấn (2)<br />
<br />
<br />
Vũ Tuyết Trinh<br />
<br />
Truy vấn lồng nhau<br />
<br />
<br />
<br />
Truy vấn có sắp xếp<br />
<br />
<br />
<br />
Truy vấn nhóm<br />
<br />
<br />
<br />
Truy vấn kết nối<br />
<br />
SELECT *<br />
FROM accounts<br />
WHERE balance = ( select max(balance)<br />
from accounts)<br />
<br />
SELECT *<br />
FROM accounts<br />
ORDER BY balance;<br />
SELECT branchnum, avg(balance)<br />
FROM accounts<br />
GROUP BY branchnum;<br />
SELECT distinct branch.adresse<br />
FROM accounts, branch<br />
WHERE<br />
accounts.branchnum = branch.number<br />
and accounts.balance > 10000;<br />
<br />
2<br />
<br />
Thiết kế và quản trị cơ sở dữ liệu<br />
<br />
Đánh chỉ mục trong CSDL<br />
<br />
Điều kiện<br />
truy nhập<br />
dữ liệu<br />
<br />
index<br />
<br />
{Tuples}<br />
<br />
Bản ghi<br />
Phù hợp<br />
<br />
Khóa tìm kiếm<br />
(Sequential vs. Non sequential)<br />
<br />
5<br />
<br />
B-Tree<br />
96<br />
75 83<br />
<br />
33 48 69<br />
<br />
Vũ Tuyết Trinh<br />
<br />
75 80 81<br />
<br />
107<br />
<br />
83 92 95<br />
<br />
96 98 103 107 110 120<br />
<br />
3<br />
<br />
Thiết kế và quản trị cơ sở dữ liệu<br />
<br />
Các tham số ảnh hưởng đến hiệu năng<br />
<br />
<br />
Số lượng các nút<br />
<br />
<br />
<br />
Kích thước khóa<br />
<br />
<br />
<br />
Độ sâu của cây<br />
<br />
<br />
<br />
Số trang nhớ sử dụng<br />
<br />
<br />
<br />
Chi phí duy tri (thêm, cập nhật, xóa)<br />
<br />
Hash Index<br />
<br />
<br />
<br />
Hàm băm (hash function)<br />
(key, value)<br />
<br />
Hashed key values<br />
<br />
key<br />
2341<br />
<br />
Hash<br />
function<br />
<br />
0<br />
1<br />
<br />
R1 R5<br />
R3 R6 R9<br />
<br />
R14 R17 R21 R25<br />
<br />
n<br />
<br />
Vũ Tuyết Trinh<br />
<br />
4<br />
<br />
Thiết kế và quản trị cơ sở dữ liệu<br />
<br />
Clustered vs. Unclustered Index<br />
<br />
Index entries<br />
direct search for<br />
data entries<br />
<br />
CLUSTERED<br />
<br />
Data entries<br />
<br />
UNCLUSTERED<br />
<br />
Data entries<br />
(Index File)<br />
(Data file)<br />
<br />
Data Records<br />
<br />
Data Records<br />
<br />
Dense vs. Sparse index<br />
<br />
P1<br />
<br />
Vũ Tuyết Trinh<br />
<br />
P2<br />
<br />
Pi<br />
<br />
record<br />
record<br />
<br />
record<br />
<br />
5<br />
<br />