1. Trang chủ
  2. » Công Nghệ Thông Tin

đề thi quản trị cơ sở dữ liệu phân tán 6

96 471 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 96
Dung lượng 2,41 MB

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

Nội dung

3.1 Xử lý câu hỏi3.1.1 Tổng quan Vai trò xử lý câu hỏi • Truy vấn nsd mức cao->xử lý truy vấn->các lệnh manipulation dữ liệu mức thấp Các thành phần xử lý truy vấn • Ngôn ngữ truy vấn đư

Trang 1

CHƯƠNG III: XỬ LÝ CÂU HỎI VÀ ĐỊNH VỊ DỮ LIỆU

(số tiết 5)

Xem quan tri giao dịch 1.pdf

(xem Distributed Database autum_chapter pdf +++ xu ly phan tan va song song.pdf + H:\oracle-baigiang\2010\ppt\baigiang truong codex\ ch14[1]Query Optimization.ppt )

Commutative(a) giao hoán

Trang 4

dấu cách=phép kết nối?

4

Trang 6

3.1 Xử lý câu hỏi

3.1.1 Tổng quan

Vai trò xử lý câu hỏi

• Truy vấn nsd mức cao->xử lý truy vấn->các lệnh manipulation dữ liệu mức thấp

Các thành phần xử lý truy vấn

Ngôn ngữ truy vấn được dùng (VD SQL: intergalactic dataspeak)

Phương pháp vận hành truy vấn(Các bước đi qua khi vận hành truy vấn nsd (khai báo nsd mức cao)

Tối ưu hóa truy vấn(Làm sao xác định được kế hoạch truy vấn tốt nhất)

- Ngôn ngữ truy vấn được dùng

• SQL: dataspeak giữa các thiên hà

Trang 7

- Phương pháp vận hành truy vấn

• Các bước đi qua trong vận hành truy vấn nsd bậc cao(khai báo)

- Tối ưu hóa truy vấn

• Xác định kê hoach vận hành tốt nhất như thế nào

Chọn luan phiên( thứ tự chọn các thao tác với cùng lệnh SQL?)

Vấn đề là gì? Thể hiện thực hiện các thao tác trên các site

Trang 8

Giá của luân phiên

Trang 9

Các đối tượng tối ưu hóa truy vấn

Tối thiểu hóa hàm giá thành: CPU cost+ IO cost+ communication cost

Trọng số khác nhau trong môi trường phân tán khác nhau

WAN

• Giá truyền thông chiếm ưu thế (băng thông thấp/tốc độ thấp/tổng phí gthuc lớn)

• Các giải thuật bỏ qua mọi thành phần giá khác

LAN

• Giá truyền thông không chiếm ưu thế

• Xem xét đến giá các chức năng toàn thể

Cũng có thể tối đa hóa thông lượng

Các phát biểu tối ưu hóa truy vấn

 Các kiểu tối ưu

- Đầy đủ

o Tối ưu

o Phức tạp do nhiều mối quan hệ

- Heuristics

o Không tối ưu

o Gom lại các biểu thức con chung

o Thực hiện chọn, chiếu đầu tiên

o Thay join bằng chuỗi các semijoin

o Sắp xếp các thao tác để giảm nhỏ kích thước quan hệ trung gian

o Tối ưu hóa các thao tác riêng

 Nghiền hạt tối ưu

- Đơn truy vấn tại một thời điểm

o Không thể sử dụng các kết quả trung gian chung

- Đa truy vấn tại một thời điểm

o Hiệu quả nếu nhiều truy vấn tương tự

o Không gian quyết định lớn hơn nhiều

 Tối ưu hóa thời gian

- Tĩnh

o Việc dịch=> tối ưu hóa hơn vận hành

o Khó dự doán kích thước kết quả trung gian, lan truyền lỗi

o Có thể amortize(trừ dần) qua nhiều vận hành

o R*

Trang 10

- Động

o Tối ưu hóa thời gian chạy

o Thông tin chính xác trên các kích thước quan hệ trung gian

o Phải tôi ưu hóa lại cho nhiều vận hành

*Cardinality của domain

*Số lượng thực các giá trị khác nhau

- Assumption chung

• Độc lập các giá trị thuộc tính khác nhau

• Phân tán uniform các giá trị thuộc tính trong domain của chúng

Trang 11

• Giá thành truyền thông chiếm ưu thế: bỏ qua mọi yếu tố giá thành khác

• Lịch biểu tối thiểu hóa giá thành truyền thông

• Các lịch biểu cục bộ phụ thuộc vào tối ưu hóa truy vấn trung tâm

• Giá truyền thông ko chiếm ưu thế

• Hàm giá tổng thể có thể được xem xét

• Quảng bá có thể được thám hiểm(join)

• Giải thuật đặc biệt tồn tại cho mạng star

METHODOLOGY TIếN TRÌNH TRUY VấN PHÂN TÁN

Truy vấn tính toán trên các quan hệ phân tán->(site điều khiển)->Truy vấn phân đoạn được tối ưu hóa với các thao tác truyền thông->(các site cục bô)->Các truy vấn cục bộ tối ưu hóa

Site điều khiển :

Lược đồ tổng thê(phân rã truy vấn)->truy vấn đại số trên các quan hệ phân tán->lược đồ phân đoạn(định vị dữ liệu)->phân đoạn truy vấn->thống kê trên phân đoạn(tối ưu hóa tổng thể)-> truy vấn phân đoạn được tối ưu hóa với các thao tác truyền thông

Các site cục bộ :

->Lược đồ cục bộ(Tối ưu hóa cục bộ)-> Các truy vấn cục bộ tối ưu hóa

XEM SƠ ĐỒ DƯỚI

Trang 12

Bước 1: Phân rã truy vấn

Đầu vào: truy vấn tính toán trên quan hệ tổng thể

- Chuẩn hóa

• Vận dụng định lượng và phân loại truy vấn

- Phân tích

• Phát hiện và loại bỏ các truy vấn “ko đúng”

• Chỉ có thể cho một tập con của tính toán quan hệ

- Đơn giản hóa

Trang 13

Tái cấu trúc

Tái cấu trúc-Các luật chuyển

Trang 14

Ví dụ

Truy vấn tương đương

14

Trang 15

Tái cấu trúc

Bước 2: Định vị dữ liệu

Đầu vào: truy vấn đại số trên các quan hệ phân tán

- Xác định phân đoạn nào bị liên quan

- Chương trình tối ưu hóa

• Thay thế cho mỗi truy vấn tổng thể chương trình vật liệu của nó

• Tối ưu hóa

Trang 16

Ví dụ:

Cung cấp cơ chế song song

Loại bỏ các công việc không càn thiết

Bước 3: Tối ưu hóa truy vấn tổng thể

Đầu vào: truy vấn phân đoạn

- Tìm lịch biểu tổng thể tốt nhất(không chắc đã tối ưu nhất)

• Tối thiểu hóa hàm giá

16

Trang 17

• Xử lý join phân tán

Các cây Bushy và tuyến tính

Quan hệ nào, xếp(ship) đến đâu

Xếp toàn bộ và xếp khi cần

• Quyết định sử dụng các semijoin

Semijoin tiết kiệm truyền thông với nhiều xử lý cục bộ hơn

• Các phương pháp join

Vòng lồng và join thứ tự( join móc nối hay băm)

1/ Tối thiểu hóa giá thành:

- Không gian giải phap

- Hàm giá (về thời gian)

Giá IO+Giá CPU+Giá truyền thông

Có thể có các tham số khác nhau trong các môi trường phân tán khác nhau(LAN

và WAN)

Cũng có thể cực đại hóa thông lượng

- Giải thuật tìm kiếm

Chuyển trong không gian giai phap thế nào

Tìm kiếm , các giải thuật heuristics( iterative improvement, simulated

annealing,genetics )

2/Xử lý tối ưu tìm kiếm(QEP=kế hoạch vận hành truy vấn=Query Execution Plan)

Trang 18

Truy vấn đàu vào->Chuyển đổi các luật (phát sinh không gian tìm kiếm)->QEP tương đương->Mô hình giá(chiến lược tìm kiếm)->QEP tốt nhất

- Không gian tìm kiếm

• Không gian tìm kiếm được đặc trưng bởi các kế hoạch vận hành xen kẽ

• Tập trung vào các cây join

• Với N quan hệ (có O(N!) ) các cây join tương đương có thể có được bằng cách áp dụng các luật truyền thông và liên hiệp

SELECT ename,resp

FROM emp,asg,proj

WHERE emp.eno=asg.eno

AND asg.pno=proj.pno

- Không gian tìm kiếm(tiêp)

• Bởi tính nghiêm ngặt của heuristic: thực hiện các thao tác unary trước các thao tác nhị phân

• Bởi tính nghiêm ngặt của cây join: chỉ xem cây tuyến tính (mỗi lần thêm một nút vào cây), bỏ qua cây bushy(nhóm hai riêng rẽ các nut thành nút mới)

Chiến luoc tìm kiếm: Làm sao chuyển trong không gian tim kiếm

• Xác định

o Bắt đầu từ các quan hệ cơ sở và xây dựng các kế hoach bằng cách thêm mỗi quan hệ ở mỗi bước

o Lập trình động: tìm kiếm lân cận trước hết

o Geedy: tìm kiếm sâu trước hết

• Ngẫu nhiên

o Tìm kiếm để tối ưu quanh một điểm bắt đầu riêng

o Cân nhắc tối ưu thời gian vận hành

o Tốt hơn khi >5-6 quan hệ

o Sự tôi luyện được mô phỏng

o Hoàn thiện giao tiếp

Các chiến lược tìm kiếm

- Xác định: Nhặt quan hệ R1,R2->buoc sau nhặt tiếp R3 để tìm với kết quả trước ->buoc sau nhặt R4 với kết_quả(kết_quả(R1,R2),R3)

- Ngẫu nhiên kết_quả(kết_quả(R1,R2),R3)=> kết_quả(kết_quả(R1,R3),R2)

Các hàm giá

18

Trang 19

o Làm song song nhiều nhất có thể

o Có thể tăng thời gian tổng thể do hoạt động tổng the tăng

- Giá tổng cộng

o Tổng mọi yếu tố giá thành= CPU+IO+truyền thông

o Giá CPU=giá 1 chỉ thi* số chỉ thị

o Giá IO=giá đơn vị đĩa* số đơn vị

Giá truyền thông= = thời gian thông điệp*số thông điệp nối tiêp+ thời gian truyền*số byte nối tiếp

Các yếu tố giá

Giá kdong thông điệp và truyền cao

Giá xử lý cục bộ thấp(các máy tính lớn và mini)

Tỉ lệ truyền thông trên giá IO=20:1

Giá Truyền thông và xử lý cục bộ có thể xấp xỉ

Tỉ lệ chừng 1:1.6

Ví dụ

Trang 20

- Nhiều quan hệ sẽ khó khăn hơn do nhiều xen kẽ

• Tính toán giá mọi luân phiên và chọn luân phiên tốt nhất

 Sự cần tính toán kích thước các quan hệ trung gian là khó khăn

Trang 22

Kết nối (kí hiệu IXI) Bán kết nối ký hiệu (IX hay XI) Nếu R IX S thì chỉ tập con của R thôi Khác R IXI S thì mọi bộ thuộc R và S

Exhaustive(a): hết mọi khía cạnh, thấu đáo, toàn diện

22

Trang 25

Bước 4: Tối ưu hóa cục bộ

Đầu vào: lịch biểu vận hành tổng thể tốt nhất

• Chọn đường truy nhập(assess path) tốt nhất

• Sử dụng các kỹ thuật tối ưu hóa trung tâm

• ???

3.1.2 Trường hợp nghiên cứu: Oracle

(xem Distributed Database autum_chapter pdf +++ xu ly phan tan va song song.pdf

xu ly phan tan va song song.pdf + H:\oracle-baigiang\2010\ppt\baigiang truong codex\ ch14[1]Query Optimization.ppt )

Quan tâm đến các vấn đề(1/Tối ưu hóa truy vấn=sắp xếp các điều kiện truy vấn phù hợp trong câu lệnh SQL_thao tác nào trước_ 2/Tổ chức dữ liệu để tìm kiếm nhanh=lập chỉ mục 3/Tối ưu hóa không gian lưu trữ=TableSpace,extension)

 Vấn đề/các dạng câu hỏi/cấu trúc câu hỏi

Distributed Query Optimization

Distributed query optimization là một đặc điểm của Oracle Database nhằm giảm nhỏ

tổng số dữ liệu truyền yêu cầu giữa các site khi lấy dữ liệu giao dịch từ các bảng ở xa được tchieu trong câu lênh SQL phân tán

Trang 26

Tối ưu hóa truy vấn sử dụng tối ưu dựa trên code để tìm hay phát sinh các biểu thức SQL lấy ra chỉ những dữ liệu cần thiết từ các bảng ở xa , xử lý dữ liệu đó ở site ở xa hay đôi khi trên site cục bộ và gửi kết quả đến site cục bộ xử lý lần cuối Thao tác này giảm nhỏ tổng số truyền dữ liệu yêu cầu so với thời gian lấy để chuyển toàn bộ dữ liệu đến site cục

bộ để xử lý (Cần có thuật giải-cminh??? "Using Cost-Based Optimization")

Việc sử dụng các thông báo tối ưu dựa trên code như DRIVING_SITE, NO_MERGE, and

INDEX, ta có thể đkhiển nơi nào xử lý dữ liệu và làm sao nó truy nhập được dữ liệu

Kiến trúc và hoạt động

Kiến trúc xử lý câu hỏi trong Oracle gồm 4 thành phần: bộ dịch, bộ tối ưu,bộ phát nguồn

dòng và mô tơ vận hành SQL

Bộ dịch thực hiện phân tích cú pháp và ngữ nghĩa của các câu lệnh SQL Bộ tối ưu sử

dụng các luật nội tại hay các phương pháp định giá nhằm xác định cách tốt nhất tạo kết quả cho truy vấn Đầu ra của bộ tối ưu là một kế hoạch mô tả phương pháp tối ưu cho vận hành Oracle server cung cấp 2 phương pháp tối ưu hóa: bộ tối ưu theo giá (CBO) và theo

luật(RBO) Bộ phát nguồn dòng nhận kế hoạch tối ưu từ bộ tối ưu Nó đưa ra kế hoạch

vận hành cho câu lệnh SQL Kế hoạch vận hành là một tập hợp các cấu trúc nguồn dòng

dưới dạng cây Mỗi nguồn dòng trả về một tập các dòng cho bước đó Mo tơ Vận hành

26

Trang 27

SQL là thành phần làm việc trên các kế hoạch kết nối với câu lệnh SQL Xong nó tạo ra

kết quả của truy vấn Mỗi dòng nguồn được tạo bởi bộ phát nguồn dòng được vận hành bởi mo tơ vận hành SQL

Mặc định, mục tiêu của CBO là thông lượng tốt nhất.Điều này có nghĩa là nó chọn tổng

số ít nhất các tài nguyên cthiet cho xử lý tất cả các dòng được truy nhập bởi lệnh Oracle

cũng có thể tới ưu hóa thời gian dáp ứng Điều này có nghĩa là nó sử dụng ít tài nguyên

cần thiết nhất cho xử lý dòng đầu truy nhập bởi câu lênh SQL Nhìn chung, sử dụng cách

tiếp cận CBO Cty Oracle đang tiếp tục hoàn thiện CBO và các đặc điểm mới với CBO Cách tiếp cận RBO đã dành sẵn tương thích với các ứng dụng thừa kế Minh họa

của CBO như sau

Đầu vào của bộ chuyển truy vấn là truy vấn đã dịch Đối tượng chính của bộ chuyển truy vấn là xác định liệu nó có ưu thế gì cho thay đổi dạng của truy vấn sao cho nó có thể tạo

ra kế hoach truy vấn tốt nhất 4 kỹ thuật chuyển truy vấn được dùng bởi bộ chuyển : view merging, predicate pushing, subquery unnesting, and query rewrite using materialized views Bất kỳ tổ hợp của các chuyển này phải được ứng dụng cho truy vấn đã cho

Bộ dự đoán phát sinh 3 kiểu đo lường: selectivity, cardinality, and cost Tính chọn lọc

biểu diễn một phân đoạn của các hàng từ một tập hợp hàng, nằm trong khỏang giá trị 0.0 đên 1.0 Nó chỉ báo rằng có bao nhiêu hàng từ tập các hàng sẽ đi qua kiểm tra dự định

Cardinality biểu diến số các dòng trong tập các dòng Có một vài kiểu đo cardinality: effective, join, distinct, and group cardinality Giá thành biểu diễn các đơn vị công việc

Trang 28

hay tài nguyên được dùng khi thực hiện thao tác CBO dùng việc dùng I/O đĩa, CPU và

bộ nhớ như đơn vị công việc Thao tác có thể quét bảng dùng một chỉ mục, kết nối 2 bảng với nhau hay sắp xếp một tập các hàng

CHức năng chính của bộ phát kế hoạch là thử các khả năng có thể khác nhau và lấy ra một khả năng giá thấp nhất Rất nhiều kế hoạch khác nhau khả dĩ vì nhiều tổ hợp của các đường truy nhập, phương pháp join và thứ tự join khác nhau chúng có thể được dùng để truy nhập và xử lý dữ liệu theo những cách khác nhau và tạo cùng kết quả Số lượng các

kê hoạch khả dĩ cho các khối truy vấn tỷ lệ với số các hạng mục join trong mệnh đề FROM Số lượng này tăng số mũ với các hạng mục join Vì nguyên nhân này, bộ phát kế hoach sử dụng một ngưỡng nội để giảm nhỏ số các kế hoạch nó thử khi tìm ra 1 trong những giá thấp nhất Ngưỡng dựa trên giá của kế hoạch tốt nhất hiện thời

Đường truy nhập

Đường truy nhập là cách mà tại đó, dữ liệu được xử lý từ CSDL Với bất kỳ hàng nào trong bất kỳ bảng nào được truy nhập bởi lệnh SQL, có 3 cách chung nhờ đó hàng có thể được định vị và lấy ra:

1 Một hàng có thể được lấy qua một quét bảng đầy đủ, đọc mọi dòng từ bảng và lọc

ra những dòng hợp tiêu chuẩn lựa chọn

2 Một dòng có thể được lấy ra nhờ sử dụng index, duyệt qua chỉ mục dùng giá trị cột index được đặc tả băng câu lệnh

3 Một dòng có thể được lấy ra nhờ đặc tả ROWID Truy nhâp ROWID là cách nhanh nhất lấy ra 1 hàng vì điều này đặc tả chính xác vị trí của dòng trong CSDL

Nói chung truy nhập chỉ mục nên dùng khi các câu lệnh lấy tập nhỏ các hàng của bảng, trong khi quét toàn bảng hiệu quả khi truy nhập phần bảng lớn hơn

CBO chọn một đường truy nhập dựa trên các đường truy nhập có sẵn cho lệnh và giá dự đoán vận hành lệnh sử dụng mỗi đường truy nhập hay tổ hợp các đường VD sau minh họa bộ tối ưu sử dụng selectivity thế nào:

SELECT *

FROM emp

WHERE ename = 'MINH';

Nếu cột ename là unique or primary key thì bộ tối ưu sẽ xác định rằng chỉ có một tên người là MINH và chỉ trả về 1 dòng Trong trường hợp này, truy vấn rất selective và bộ tối ưu truy nhập bảng dùng một quét unique trên chỉ mục buộc unique or primary key

28

Trang 29

Nếu cột ko phải là unique or primary key thỉ bộ tối ưu có thể dung các thống kê sau để dự đoán selectivity của truy vấn:

USER_TAB_COLUMNS.NUM_DISTINCT số các giá trị cho mỗi cột trong bảng

USER_TABLES.NUM_ROWS số các hàng trong mỗi bảng

Bằng cách chia các hàng trong bảng emp thành các giá trị khác nhau trong cột ename,

bộ tối ưu sẽ dự đoán trên phần tram các người làm có cùng tên Bằng cách giả thiết các giá trị ename là khác nhau , bộ tối ưu dùng phần trăm này như một selectivity các truy vấn

có CÁc thống kê này có thể tìm thấy trong chứng cứ USER_TAB_COL_STATISTICS

…(hay chứng cứ USER_TAB_COLUMNS) Bộ tối ưu giả thiết rằng giá trị empno được phân tán trong phạm vi giữa giá trị cao nhất và thấp nhất Rồi bộ tối ưu xác định bao nhiêu phần tram các giá trị này nhỏ hơn7500 và dung giá trị nay khi dự đoán selectivity của truy vấn

Kết nối

Để chọn kế hạch vận hành cho lệnh join, bộ tối ưu phải chọn một đường truy nhập để lấy

ra từ mỗi bảng trong lệnh join, xác định phương pháp tương ứng cũng như thứ tự kết nối

Có một vài phương pháp được Oracle hỗ trợ:

Nested Loop Joins: Bộ tối ưu xác định bảng driving (the outer loop) Bảng khác được chỉ định là bảng bên trong Với mỗi hàng trong bảng first (outer) table, Oracle truy nhập mọi hàng trong second (inner) table Vỏng ngoài xuất hiện trên vòng trong trong

kế hoach vận hành

Nested Loop Outer Joins: This operation is used when an outer join is used between two tables The outer join returns the outer (preserved) table rows, even when there are

no corresponding rows in the inner (optional) table

Hash Joins: The optimizer uses the smaller of the two tables/data sources to build a hash table on the join key in memory It then scans the larger table, probing the hash table to find the joined rows

Trang 30

Hash Join Outer Joins: This operation is used for outer joins where the optimizer decides that the amount of data is large enough to warrant an hash join, or it is unable

to drive from the outer table to the inner table The order of tables is not determined by the cost, but by the join condition The outer table (whose rows are being preserved) is used to build the hash table, and the inner table is used to probe the hash table

Sort Merge Joins: In a merge join, there is no concept of a driving table Both the inputs are sorted on the join key The sorted lists are then merged together

Sort Merge Outer Joins: When an outer join cannot drive from the outer (preserved) table to the inner (optional) table, it cannot use hash join or nested loop joins Then it uses the sort merge join for executing the join operation

Cartesian Joins: A Cartesian join happens when one or more of the tables does not have any join conditions to any other tables in the statement The optimizer joins every row from one data source with every row from the other data source (Cartesian product

of the two sets) Cartesian joins generally result from poorly-written SQL

Full Outer Joins: Full outer joins let you join tables together, yet still show rows which

do not have corresponding rows in tables joined-to

30

Trang 31

Đổi hướng các truy vấn phân tán

Server Oracle cục bộ phân rã câu hỏi thành số các câu hỏi ở xa, gửi chúng đến các út ở

xa vận hành Sau khi có kqua đến nút cục bộ thì dùng cho nsd hay ứng dụng cục bộ

Có một vài tùy chọn cho tơi sưu hóa xly truy vấn Bao gồm:

• Using Collocated Inline Views

• Using Cost-Based Optimization

• Analyzing the Execution Plan

• Using Hints

Sử dụng các khung nhìn trong dòng được sắp thứ tự (Collocated

Inline Views)

Tối ưu hiệu quả nhất là truy vấn truy nhập là ít nhất và xử lý chỉ các dlieu cần thiết

For example, assume you reference five remote tables from two different remote databases in a distributed query and have a complex filter (for example, WHERE

r1.salary + r2.salary > 50000) You can improve the performance of the query

by rewriting the query to access the remote databases once and to apply the filter at the remote site This rewrite causes less data to be transferred to the query execution site

Rewriting your query to access the remote database once is achieved by using

collocated inline views The following terms need to be defined:

SELECT e.empno,e.ename,d.deptno,d.dname FROM (SELECT empno, ename from

Trang 32

Oracle khuyến cáo ta nên hình thành việc dùng collocated inline views để tăng hiệu năng truy vấn CBO Oracle có thể viết lại trong suot với nhiều truy vấn để lấy nhiều hiện năng cho bới collocated inline views

Sử dụng tới ưu hóa dựa trên giá (CBO)

Ngoài việc viêt lại truy vấn dùng collocated inline views , pphap CBO tới ưu hóa các truy vấn phân tán bằng cách tập hợp các thống kê tham chiếu bảng và ttoan thực hiện bởi bộ tối ưu

VD pitch giá với gthiet các thống kê bảng đã có sẵn Bên trong với lệnh CREATE TABLE :

CREATE TABLE AS (

SELECT l.a, l.b, r1.c, r1.d, r1.e, r2.b, r2.c

FROM local l, remote1 r1, remote2 r2

CBO làm việc thế nào?

Nhiện vụ chính của bộ tới ưu là viết lại truy vấn phân tán dùng collocated inline views

Có 3 bước

1 Mọi view có khả năng merge được thì merged

2 Bộ tối ưu thực hiện ktra khối truy vấn được sắp xếp

32

Trang 33

3 Bộ tối ưu viết lại truy vấnbawngf các dùng collocated inline views

Sauk hi truy vấn được viết lại, nó được vận hành và tập dlieu trả về cho nsd

Trong CBO việc thực hiện trong suốt với nsd, ko thể cải thiện đơcj bửi nsd Đặc biệt nếu truy vấn chứa

• Aggregates

• Subqueries

• Complex SQL

thì CBO không thể hiệu quả

Xem them hints để bieetscacsh truy vấn hiệu quả

Thiết lập tối ưu CBO

Càn làm những viwecj sau để khai thác ưu điểm của bộ tối ưu:

• Setting Up the Environment

• Analyzing Tables

Thiết lập môi trường

Tlap tso khởi động OPTIMIZER_MODE để CHOOSE or COST CÁch tlap:

• Thay đổi tso OPTIMIZER_MODE trong file kdongj.

• Tlap các mức phiên bằng cách công bố lệnh ALTER SESSION

Sử dụng một trong các lệnh sau ở mức phiên

ALTER SESSION OPTIMIZER_MODE = CHOOSE;

ALTER SESSION OPTIMIZER_MODE = COST;

Phân tích bảng

Cần cung cấp các ttin thống kê cxac cho các bảng lien quan Ta dùng gói

DBMS_STATS hay lệnh ANALYZE :

Note: Chú ý

Cần kết nối đến site ở xa sau đó vận hành lệnh ANALYZE hay thủ tục DBMS_STATS Không thể dùng:

Trang 34

ANALYZE TABLE remote@remote.com COMPUTE STATISTICS;

CÁc thủ tục sau của gói DBMS_STATS cho ta tập hợp các ttin thống kê cho lớp thống kê nào đó của bộ tối ưu:

Chuẩn bị CSDL để lưu kế hoạch

Trước khi xem một kế hoạch vận hành, cần chuẩn bị CSDL để lưu kế hoạch vận hành

Có thể thực hiện script

SQL> @UTLXPLAN.SQL

Note:

The utlxplan.sql file can be found in

the $ORACLE_HOME/rdbms/admin directory

Sau đó ta có bảng PLAN_TABLE, được tạo trong ldo hiện thời để lưu tạm thời kế hoạch vận hành

Phát sinh kế hoạch vận hành

Sau khi đã có CSDL lưu kế hoạch vận hành, có thể xem kê hoạch truy vấn đặc tả Thay

34

Trang 35

vì dùng câu lệnh SQL trực tiếp, có thể nối vào mệnh đề EXPLAIN PLAN FOR VD:

EXPLAIN PLAN FOR

| TABLE ACCESS BY INDEX RO|DEPT | | | | | |

| INDEX UNIQUE SCAN |PK_DEPT | | | | | |

-Nếu ta đang vận hành các truy vấn phân tán bằng cách viết collocated inline views của mình hay dùng hints, tốt nhất là phát sinh kế hoạch vận hành trước và sau tối ưu hóa bằng tay Với cả hai khoạch vận hành, ta có thể so sánh hiệu quả của tối ưu hóa bằng tay và tạo sự cần thiết cải thiện hiệu năng của truy vấn phân tán

Để xem lênh SQL vận hành tại site ở xa, hãy chạy lệnh SELECT sau:

SELECT OTHER

FROM PLAN_TABLE

Trang 36

WHERE operation = 'REMOTE';

Sau đây là kqu đưa ra mẫu:

SELECT DISTINCT "A1"."DEPTNO" FROM "EMP" "A1"

GROUP BY "A1"."DEPTNO" HAVING COUNT("A1"."DEPTNO")>3

If a statement is not sufficiently optimized, then you can use hints to extend the capability

of cost-based optimization Specifically, if you write your own query to utilize collocated inline views, instruct the cost-based optimizer not to rewrite your distributed query

Additionally, if you have special knowledge about the database environment (such as statistics, load, network and CPU limitations, distributed queries, and so forth), you can specify a hint to guide cost-based optimization For example, if you have written your own optimized query using collocated inline views that are based on your knowledge of the database environment, specify the NO_MERGE hint to prevent the optimizer from rewriting your query

This technique is especially helpful if your distributed query contains an aggregate, subquery, or complex SQL Because this type of distributed query cannot be rewritten by the optimizer, specifying NO_MERGE causes the optimizer to skip the steps described

in "How Does Cost-Based Optimization Work?"

The DRIVING_SITE hint allows you to define a remote site to act as the query execution site In this way, the query executes on the remote site, which then returns the data to the local site This hint is especially helpful when the remote site contains the majority of the data

See Also:

Oracle9i Database Performance Tuning Guide and Reference for more

information about using hints

36

Trang 37

SELECT /*+NO_MERGE(v)*/ t1.x, v.avg_y

FROM t1, (SELECT x, AVG(y) AS avg_y FROM t2 GROUP BY x) v,

WHERE t1.x = v.x AND t1.y = 1;

/* in query block */

SELECT t1.x, v.avg_y

FROM t1, (SELECT /*+NO_MERGE*/ x, AVG(y) AS avg_y FROM t2 GROUP BY x) v,

WHERE t1.x = v.x AND t1.y = 1;

Typically, you use this hint when you have developed an optimized query based on your knowledge of your database environment

Sử dụng DRIVING_SITE Hint

The DRIVING_SITE hint allows you to specify the site where the query execution is

performed It is best to let cost-based optimization determine where the execution should

be performed, but if you prefer to override the optimizer, you can specify the execution site manually

Following is an example of a SELECT statement with a DRIVING_SITE hint:

SELECT /*+DRIVING_SITE(dept)*/ * FROM emp, dept@remote.com

WHERE emp.deptno = dept.deptno;

Trang 38

Tối ưu hóa các Hints

Hints cho phép ta quyết dinh thường được tạo ra bởi bộ tối ưu Chúng chỉ áp dụng trong khối lệnh trong đó chúng có mặt Ta có thể gửi cac hints cho các lệnh SQL đến bộ tối ưu bằng các dấu hiệu

{DELETE|INSERT|SELECT|UPDATE} /*+ hint [text] [hint[text]] */

{DELETE|INSERT|SELECT|UPDATE} + hint [text] [hint[text]]

RE: What are HINTS in ORACLE?

HINTS are nothing but the comments used in a SQL statement to pass instructions to the Oracle optimizer.The optimizer uses these hints as suggestions for choosing an execution plan for the statement.

A statement block can have only one comment containing hints and that comment must follow the SELECT UPDATE INSERT or DELETE keyword

Hints can be categorized as follows:

• Hints for Optimization Approaches and Goals (eg: ALL_ROWS)

• Hints for Access Paths

• Hints for Query Transformations (eg:NO_EXPAND )

• Hints for Join Orders

• Hints for Join Operations

• Hints for Parallel Execution

• Additional Hints (eg:NOCACHE APPEND)

Generally oracle uses Cost_based optimisation In this method it will calculate all the execution plans for the query to execute and chooses the best optimal plan Sometimes we may know the best execution plan to you rather which is selected by optimisation technique We use HINTS to force the optimiser to use the optimal execution plan

Trang 39

Hints cho các tiếp cận tối ưu và các mục tiêu.

Hints cho các đường truy nhập

The FULL hint explicitly chooses a full table scan for the specified table

SELECT /*+ ULL(A) */ accno, bal FROM accounts a WHERE accno = 7086854;

The ROWID hint explicitly chooses a table scan by rowid for the specified table.SELECT /*+ROWID(emp)*/ * FROM emp WHERE rowid >

'AAAAtkAABAAAFNTAAA' AND empno = 155;

The HASH hint explicitly chooses a hash scan to access the specified table It applies only to tables stored in a cluster

The INDEX hint explicitly chooses an index scan for the specified table

SELECT /*+ INDEX(patients sex_index) */ name, height, weight FROM patients WHERE sex = 'm';

The NO_INDEX hint explicitly disallows a set of indexes for the specified table.SELECT /*+NO_INDEX(emp emp_empno)*/ empno FROM emp WHERE empno > 200;

Hints for Query Transformations

Hints for Join Orders

Trang 40

The ORDERED hint causes Oracle to join tables in the order in which they appear in the FROM clause.

SELECT /*+ ORDERED */ tab1.col1, tab2.col2, tab3.col3 FROM tab1, tab2, tab3 WHERE tab1.col1 = tab2.col1 AND tab2.col1 = tab3.col1;

The STAR hint forces a star query plan to be used, if possible A star plan has the largest table in the query last in the join order and joins it with a nested loops join on a

concatenated index The STAR hint applies when there are at least three tables, the large table's concatenated index has at least three columns, and there are no conflicting access

or join method hints

SELECT /*+ STAR */ tab1.col1, tab2.col2, tab3.col3 FROM tab1, tab2, tab3 WHERE tab1.col1 = tab2.col1 AND tab2.col1 = tab3.col1;

Hints for Join Methods

The USE_NL hint causes Oracle to join each specified table to another row source with

a nested loops join using the specified table as the inner table

SELECT /*+ ORDERED USE_NL(customers) to get first row faster */

accounts.balance, customers.last_name, customers.first_name

FROM accounts, customers

WHERE accounts.custno = customers.custno;

The USE_MERGE hint causes Oracle to join each specified table with another row source with a sort-merge join

SELECT /*+USE_MERGE(emp dept)*/ *

FROM emp, dept

40

Ngày đăng: 17/01/2016, 00:08

TỪ KHÓA LIÊN QUAN

w