Siêu thị PDFTải ngay đi em, trời tối mất

Thư viện tri thức trực tuyến

Kho tài liệu với 50,000+ tài liệu học thuật

© 2023 Siêu thị PDF - Kho tài liệu học thuật hàng đầu Việt Nam

Khai thác các chỉ mục XML để tăng hiệu năng truy vấn XML trong DB2 doc
MIỄN PHÍ
Số trang
51
Kích thước
311.0 KB
Định dạng
PDF
Lượt xem
1261

Khai thác các chỉ mục XML để tăng hiệu năng truy vấn XML trong DB2 doc

Nội dung xem thử

Mô tả chi tiết

Khai thác các chỉ mục XML để tăng hiệu năng truy vấn XML trong DB2 9

Matthias Nicola, Chuyên gia DB2 , IBM Silicon Valley Laboratory

Tóm tắt: DB2® 9 đảm bảo lưu trữ pureXML và cung cấp XQuery và SQL/XML

như là các ngôn ngữ truy vấn. Các chỉ mục XML rất cần thiết cho hiệu suất truy

vấn cao, nhưng việc sử dụng chúng để đánh giá truy vấn phụ thuộc vào cách tạo

nên các vị từ truy vấn. Bài viết này trình bày một tập các hướng dẫn để viết các

truy vấn XML và tạo các chỉ mục XML một cách phù hợp để cho các chỉ mục

tăng tốc độ truy vấn của bạn như mong muốn. Ngoài ra học để tìm kiếm trong các

kế hoạch thực hiện truy vấn XML nhằm phát hiện các vấn đề hiệu năng và tìm ra

cách sửa chữa chúng. Một "cẩm nang" ("cheat sheet") có thể tải về tóm tắt các

hướng dẫn quan trọng nhất. [30.07.2009: Bài viết này đã được cập nhật cho DB2

9.5 và 9.7, trong đó có thêm các truy vấn thí dụ SQL/XML.--Biên tập.]

Giới thiệu

DB2 9 cung cấp lưu trữ pureXML, cùng với các chỉ mục XML, XQuery và

SQL/XML như ngôn ngữ truy vấn, hỗ trợ lược đồ XML, các mở rộng XML đến

các tiện ích như: Nhập/Xuất và Chạy báo cáo trạng thái (Runstats). Cũng như đối

với các truy vấn quan hệ, các chỉ mục là điều quyết định đối với hiệu suất cao của

XQuery và các câu lệnh SQL/XML của bạn. DB2 cho phép bạn định nghĩa các chỉ

mục XML với đường dẫn cụ thể trên các cột XML. Điều đó có nghĩa bạn có thể sử

dụng chúng để đánh chỉ mục các phần tử và các thuộc tính được chọn, thường

được sử dụng trong các vị từ và các phép kết nối. Ví dụ, khi sử dụng dữ liệu mẫu

trong Hình 1, chỉ mục sau là idx1 sẽ có ích cho việc tìm kiếm bảng và các kết nối

dựa vào các định danh (ID) tác giả trên tất cả các tài liệu trong cột XML bookinfo

của bảng books.

create table books(bookinfo XML);

create index idx1 on books(bookinfo)

generate keys using xmlpattern

'/book/authors/author/@id'

as sql double;

Hình 1. Tài liệu XML thí dụ theo định dạng văn bản (tuần tự) và định dạng

(phân cấp) đã được phân tích

Do DB2 không bắt buộc bạn phải kết hợp một lược đồ XML đơn với tất cả các tài

liệu trong một cột XML, các kiểu dữ liệu cho các phần tử và các thuộc tính cụ thể

không có quyền ưu tiên (a-priori) đã biết. Vì vậy, mỗi chỉ mục XML đòi hỏi bạn

phải chỉ định một kiểu đích. Bạn sẽ thấy sau trong bài viết này lí do các kiểu lại

quan trọng. Các kiểu dữ liệu có sẵn cho các chỉ mục XML là:

 VARCHAR(n): Cho các nút có các giá trị chuỗi có chiều dài tối đa n đã

biết.

 VARCHAR HASHED: Cho các nút có các giá trị chuỗi có độ dài tùy ý.

Chỉ mục này có chứa các giá trị băm (hash) của chuỗi thực tế và có thể

được sử dụng chỉ cho các vị từ so sánh bằng, không cho vị từ so sánh xếp

hạng (range).

 DOUBLE: Cho các nút có kiểu số bất kỳ.

 DATE and TIMESTAMP: Cho các nút có các giá trị ngày tháng hoặc dấu

thời gian.

Chiều dài của một chỉ mục VARCHAR(n) là một sự ràng buộc cứng nhắc. Nếu

bạn chèn một tài liệu vào chỗ mà ở đó giá trị của một phần tử có chỉ mục hoặc

thuộc tính vượt quá độ dài tối đa n, việc chèn sẽ không thành công. Tương tự, câu

lệnh create index cho một chỉ mục VARCHAR(n) không chạy nếu bắt gặp một giá

trị lớn hơn n.

Theo mặc định, các kiểu dữ liệu cho các chỉ mục DOUBLE, DATE hoặc

TIMESTAMP không phải là một sự ràng buộc khó thực hiện. Ví dụ, chỉ mục idx1

trên thuộc tính định danh (ID) tác giả được định nghĩa là DOUBLE vì người ta

mong ID này có giá trị số. Nếu bạn chèn thêm một tài liệu vào chỗ mà ở đó một

ID của tác giả có giá trị "MN127", đây không phải số, tài liệu vẫn được chèn vào,

nhưng giá trị " MN127" không được thêm vào chỉ mục. Điều này là chính xác và

an toàn vì chỉ mục DOUBLE chỉ có thể đánh giá các vị từ số sẽ không bao giờ

khớp với giá trị "MN127". Như vậy, giá trị này có thể được loại bỏ khỏi chỉ mục

một cách an toàn.

Từ DB2 9.5 bạn có thể thêm câu tùy chọn REJECT INVALID VALUES vào định

nghĩa chỉ mục XML của bạn. Câu này buộc tuân theo các kiểu DOUBLE, DATE

hoặc TIMESTAMP của các chỉ mục như là một sự ràng buộc cứng nhắc. Nếu bạn

định nghĩa chỉ mục sau đây, một tài liệu mà ở đó một định danh (ID) tác giả có giá

trị "MN127" không thể được bổ sung và cần không có mặt trong cột XML, khi

bạn tạo chỉ mục này.

create index idx1 on books(bookinfo)

generate keys using xmlpattern

'/book/authors/author/@id'

as sql double REJECT INVALID VALUES;

Bạn có thể tìm thấy thêm các chi tiết về định nghĩa các chỉ mục XML trong "DB2

pureXML Cookbook". Trong thảo luận sau đây về cách sử dụng chỉ mục XML

chúng tôi cũng giả định rằng bạn đã quen thuộc với các khái niệm cơ bản về truy

vấn dữ liệu XML trong DB2. Để biết thêm thông tin, tham khảo các bài viết trước

đây, "Query DB2 XML Data with SQL" (Truy vấn dữ liệu XML DB2 với SQL)

(developerWorks, 03.2006) và "Query DB2 XML data with XQuery" (Truy vấn

dữ liệu XML DB2 với Xquery) (developerWorks, 04.2006) cho một sự khởi đầu,

cũng như "pureXML in DB2 9: Which way to query your XML data?" (pureXML

trong DB2 9: Dùng cách nào để truy vấn dữ liệu XML của bạn) (developerWorks,

06.2006) với nhiều ví dụ và chi tiết hơn.

Tính hợp lệ của chỉ mục XML đối với các câu lệnh XQuery và SQL/XML

Cũng như đối với các truy vấn quan hệ, các chỉ mục là điều quyết định đảm bảo

hiệu năng cao của các câu lệnh XQuery và SQL/XML của bạn. Khi ứng dụng của

bạn trình ra một truy vấn quan hệ hay truy vấn XML cho DB2, trình biên dịch truy

vấn so sánh các vị từ truy vấn với các định nghĩa chỉ mục hiện có và quyết định

xem có thể sử dụng bất kỳ các chỉ mục có sẵn nào để thực hiện truy vấn không.

Quá trình này được gọi là "khớp chỉ mục" và tạo một tập (có thể rỗng) của các chỉ

mục hợp lệ đối với truy vấn cụ thể. Tập này là đầu vào cho trình tối ưu hóa

(optimizer) theo chi phí, nó quyết định có hay không sử dụng các chỉ mục hợp lệ

bất kỳ. Trong bài viết này, tập trung vào khớp chỉ mục chứ không phải lựa chọn

chỉ mục của trình tối ưu hóa. Không có nhiều thứ mà bạn có thể làm với các quyết

định của trình tối ưu hóa, trừ chạy "runstats" để đảm bảo trình tối ưu hóa với các

thống kê chính xác về dữ liệu của bạn. Tuy nhiên, có rất nhiều thứ mà bạn có thể

làm để đảm bảo khớp chỉ mục.

Khớp chỉ mục thường là dễ trong kiểu quan hệ. DB2 có thể sử dụng một chỉ mục

được định nghĩa trên một cột quan hệ duy nhất để trả lời bất kỳ vị từ bằng hay vị

từ xếp hạng trên cột này. Tuy nhiên, với các cột XML điều này phức tạp hơn.

Trong khi một chỉ mục trên một cột quan hệ chứa tất cả các giá trị từ cột đó, một

chỉ mục XML chỉ chứa các giá trị của các nút mà nó khớp cả hai mẫu XML và

kiểu dữ liệu XML trong định nghĩa chỉ mục. Vì thế, một chỉ mục XML có thể

được dùng để đánh giá một vị từ truy vấn XML chỉ khi chỉ mục này có kiểu dữ

liệu "đúng" và chứa ít nhất tất cả các nút XML nào thỏa mãn vị từ đó. Do đó, có

hai yêu cầu quan trọng để lựa chọn chỉ mục XML:

1. Định nghĩa chỉ mục XML là bằng hoặc ít hạn chế hơn vị từ truy vấn (bao

hàm - "containment").

Tải ngay đi em, còn do dự, trời tối mất!