1. Trang chủ
  2. » Giáo án - Bài giảng

thiết kế va quan tri cơ sở dữ liệu vũ tuyết trinh notes4 xử lý truy vấn va hiệu năng he csdl sinhvienzone com

16 57 0

Đ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

Định dạng
Số trang 16
Dung lượng 773,53 KB

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

Nội dung

Xử lý truy vấn và hiệu năng hệ CSDL Vũ Tuyết Trinh trinhvt-fit@mail.hut.edu.vn Bộ môn Hệ thống thông tin, Viện CNTT&TT Đại học Bách Khoa Hà Nội Xử lý câu hỏi truy vấn Câu lệnh SQL Ph

Trang 1

Xử lý truy vấn và hiệu năng hệ CSDL

Vũ Tuyết Trinh trinhvt-fit@mail.hut.edu.vn

Bộ môn Hệ thống thông tin, Viện CNTT&TT Đại học Bách Khoa Hà Nội

Xử lý câu hỏi truy vấn

Câu lệnh SQL

Phân tích

cú pháp

(parser)

Biểu thức ĐSQH

Bộ tối ưu

(optimizer)

Biểu thức ĐSQH tối ưu

Bộ sinh mã (code generator)

Chương trình tối ưu

Trang 2

Cây toán tử

WAGON (NW, TYPE, COND, STATION, CAPACITY, WEIGHT)

TRAIN (NT, NW)

 Cây toán tử logic

 Thứ tự các phép toán

 Cây toán tử vật lý

 Các thuật toán thực thi phép toán

WAGON (NW, TYPE )

TRAIN

(NT, NW)

NW

NT = 4002 TYPE

Các phép toán vật lý (thuật toán)

 Query Blocks

 SELECT-FROM- WHERE-GROUPBY-ORDERBY

 VIEW được coi là 1 block riêng rẽ

 Dạng cây thực thi (right-deep, bushy, …)

 Thứ tự kết nối

 Thuật toán

 Sort

 Aggregates

 Select

 Project

 Join

 Nested Loop

 Sort-Merge

 Hash-Join

Trang 3

Truy nhập bảng

 Truy nhập tuần tự (Sequential scan): đọc theo khối

 Truy nhập theo địa chỉ (index scan): truy nhập vào bản ghi dựa trên chỉ mục

 Chi phí truy nhập ?

S

Phép toán nhiều pha:

Nested-Loops Join

 Nguyên tắc

 Đọc từng bản ghi của quan

hệ R (external relation) & lặp trên quan hệ S (internal relation)

 Đặc điểm

 one-and-haft pass, non-blocking

 Chi phí ?

SOURCE

S

SOURCE

R Tuple R

Tuple R

Tuple S

Matching

Tuple-based NLJ, block-based NLJ, index-based NLJ

Trang 4

Sort Merge Join

 Nguyên tắc

 Sắp xếp dữ liệu đầu vào

 trộn dữ liệu

 Đặc điểm

 two-pass, blocking algorithm

 Chi phí?

SOURCE

S

SOURCE

R

Merge

Hash Join (HJ)

 Nguyên tắc

 Tạo bảng băm trên R

 Đọc S và đối sánh với dữ liệu trên bảng băm

 Đặc điểm

 two-pass, blocking algorithm

 Chi phí ?

SOURCE

S

SOURCE

R Tuple R Tuple S

Hash Table R

1 n

Matching

hash(Tuple S) hash(Tuple R)

build

probe

Trang 5

Mô hình giá

Chí phí thực hiện câu hỏi phụ thuộc:

Chi phí truy nhập dữ liệu

Đọc ghi dữ liệu

xử lý

Truyền thông giữa các trạm làm việc CTA = s * NBPAGES + t * NBNUPLETS (+ m * NBMESSAGES)

 s = trọng số đọc/ghi dữ liệu (ví dụ = 1)

 t = trọng số xử lý của CPU (ví dụ = 1/3)

 m = trọng số truyền dữ liệu

Thông tin về các quan hệ

 Kích thước của các quan hệ và bản ghi

 Thông tin về các thuộc tính

 Thông tin về các chỉ số

Relation Cardinality Record size

Attribute Cardinality Size min - max

NW 200000 20 TYPE 200 5

CAPACITY 400 15 5 - 45

NT 2000 10 DATE 8 00 6

Relation Attributes Unique Type Num of pages

WAGON NW Yes Principal 45 WAGON TYPE No Secondary 25 WAGON COND No Secondary 30 WAGON CAPACITY No Secondary 25 TRAIN NT No Principal 18 TRAFFIC NT No Principal 20 TRAFFIC DATE no Principal 40

Relation Cardinality Record size

(num of rec./page)

Num of pages (NP’)

WAGON 200000 60(100) 1500(375) TRAIN 60000 30 (200) 225(60) TRAFFIC 80000 20 (300) 200(60)

Trang 6

Tối ưu

 Đặt vấn đề: Cho 1 câu truy vấn, các cây toán tử thực thi nào sẽ được xem xét ?

 Không gian tìm kiếm

 Chiến lược tìm kiếm

 Ước lượng giá cho các kế hoạch thực thi

 Lý tưởng:tìm ra kế hoạch thực thi tốt nhất

Thực tế:Tránh kế hoạch thực thi tồi

Bộ tối ưu

Rewriter

Planner Method-Structure

Space

Algebraic Space

Size-Distribution Estimator Cost Model

Trang 7

Query: R1 R2 R3 R4 R5

R3 R2

R4 R1 R5

Optimal Plan:

R3 R2

R4 R1 R5

Optimal Plan:

Optimal plan for joining R3, R2, R4

Query: R1 R2 R3 R4 R5

Optimal plan for

joining R3, R2, R4,

R1

Trang 8

R3 R1

R2 R2 R3

R1

Optimal

for joining R1, R2, R3

Sub-Optimal

for joining R1, R2, R3

{ R1, R2 } { R1, R3 } { R1, R4 } { R2, R3 } { R2, R4 } { R3, R4 } { R1, R2, R3 } { R1, R2, R4 } { R1, R3, R4 } { R2, R3, R4 }

{ R1, R2, R3, R4 }

R2

R3

R4 R1

Cây toán tử tối ưu

Tiến trình tối ưu

Trang 9

Các lý do dẫn đến hiệu năng thực thi truy vấn chậm

 Đòi hỏi nhiều phép truy nhập đĩa

 Không sử dụng index

 Cấu trúc CSDL không hợp lý

 Các giao dịch dư thừa, lồng nhau

Ví dụ

Employee(ssnum, name, manager, dept, salary,

numfriends)

 Clustering index : ssnum

 Non clustering indexes (i) name (ii) dept

Student(ssnum, name, degree_sought, year)

 Clustering index :ssnum

 Non clustering index :name

Tech(dept, manager, location)

 Clustering index : dept

Trang 10

Các kỹ thuật viết lại truy vấn

 Sử dụng Index

 Loại bỏ DISTINCTs

 Xem xét câu truy vấn lồng nhau

 Điều kiện kết nối

 Mệnh đề having

 Sử dụng view

 Khung nhìn lưu trữ (Materialized views)

Sử dụng Index

 Một số trường hợp index không được sử dụng

 Biểu thức toán học WHERE salary/12 >= 4000;

 Hàm tính toán trên xâu SELECT * FROM employee WHERE SUBSTR(name, 1, 1) = „G‟;

 So sánh các trường không cùng kiểu

 So sánh với giá trị rỗng

Trang 11

Hạn chế sử dụng DISTINCTs

 Ví dụ

SELECT distinct ssnum FROM employee

WHERE dept = „information systems‟

  có thể loại bỏ distinct

Hạn chế sử dụng DISTINCTs

 Ví dụ

SELECT DISTINCT ssnum FROM employee, tech WHERE employee.dept = tech.dept

 Có cần sử dụng DISTINCT?

Trang 12

Student(ssnum, name, degree_sought, year) Tech(dept, manager, location)

FROM employee, tech WHERE employee.manager = tech.manager

FROM employee, tech WHERE employee.manager = tech.manager

FROM student, employee, tech WHERE student.name = employee.name AND employee.dept = tech.dept;

23

Truy vấn lồng nhau

 SELECT ssnum FROM employee WHERE salary > (select avg(salary)

from employee)

 SELECT ssnum FROM employee WHERE dept in (select dept from tech)

 SELECT ssnum FROM employee e1 WHERE salary = (SELECT avg(e2.salary) FROM employee e2,tech WHERE e2.dept = e1.dept AND e2.dept = tech.dept)

Trang 13

Viết lại truy vấn lồng nhau

SELECT ssnum FROM employee WHERE dept in (select dept

from tech)

 SELECT ssnum FROM employee, tech WHERE employee.dept = tech.dept

Truy vấn lồng nhau với các phép toán tập hợp

 Ví dụ

 SELECT avg(salary) FROM employee WHERE manager in (select manager from tech)

 SELECT avg(salary) FROM employee, tech WHERE employee.manager = tech.manager

 So sánh 2 câu truy vấn trên

Trang 14

Truy vấn lồng có kết nối

 Ví dụ

SELECT ssnum FROM employee e1 WHERE salary = (SELECT avg(e2.salary

FROM employee e2, tech WHERE e2.dept = e1.dept

and e2.dept = tech.dept);

 INSERT INTO temp SELECT avg(salary) as avsalary, employee.dept FROM employee, tech

WHERE employee.dept = tech.dept GROUP BY employee.dept;

 SELECT ssnum FROM employee, temp WHERE salary = avsalary AND employee.dept = temp.dept

SELECT ssnum FROM employee e1 WHERE numfriends = COUNT(SELECT e2.ssnum

FROM employee e2, tech WHERE e2.dept = tech.dept

 AND e2.dept = e1.dept);

 INSERT INTO temp SELECT COUNT(ssnum) as numcolleagues, employee.dept

FROM employee, tech WHERE employee.dept = tech.dept GROUP BY employee.dept;

 SELECT ssnum FROM employee, temp WHERE numfriends = numcolleagues AND employee.dept = temp.dept;

Employee(ssnum, name, manager, dept, salary, numfriends) Student(ssnum, name, degree_sought, year)

Tech(dept, manager, location)

Trang 15

Điều kiện kết nối

 Kết nối trên trường dữ liệu có clustering indexes

 Kết nối trên trường dữ liệu kiểu số “tốt hơn” là trên trường dữ liệu kiểu xâu ký tự

Sử dụng khung nhìn

 CREATE VIEW techlocation

AS SELECT ssnum, tech.dept, location

FROM employee, tech WHERE

employee.dept = tech.dept;

 SELECT location FROM techlocation WHERE ssnum = 43253265;

 SELECT location FROM employee, tech WHERE

employee.dept = tech.dept

AND ssnum = 43253265;

Trang 16

Lưu trữ khung nhìn

 Materialized views:

CREATE MATERIALIZED VIEW VendorOutstanding BUILD IMMEDIATE

REFRESH COMPLETE ENABLE QUERY REWRITE

AS SELECT orders.vendor, sum(orders.quantity*item.price) FROM orders,item

WHERE orders.itemnum = item.itemnum group by orders.vendor;

 Các tham số

 BUILD immediate/deferred

 REFRESH complete/fast

 ENABLE QUERY REWRITE

 Lợi ích:

 Tự động cập nhật các dữ liệu tính toán

 Sử dụng bởi bộ tối ưu truy vấn

32

Ngày đăng: 30/01/2020, 21:01

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