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

15 bài thực hành tốt nhất về hiệu năng pureXML trong DB2

46 13 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

Matthias Nicola, Chuyên gia về hiệu năng CSDL, IBM Silicon Valley Laboratory Tóm tắt: DB2 9 giới thiệu sự hỗ trợ pureXML, có nghĩa là dữ liệu XML được lưu trữ và được truy vấn theo định dạng phân cấp vốn có của nó. Để truy vấn dữ liệu XML, DB2 cung cấp hai ngôn ngữ, SQL/XML và XQuery. Ngoài ra, DB2 9 có các khả năng lí tưởng về lập chỉ mục XML và hỗ trợ cho việc xác nhận tính hợp lệ của Lược đồ XML (XML Schema). Trong khi hầu hết các hướng dẫn thi hành hiện...

15 thực hành tốt hiệu pureXML DB2 Matthias Nicola, Chuyên gia hiệu CSDL, IBM Silicon Valley Laboratory Tóm tắt: DB2 giới thiệu hỗ trợ pureXML, có nghĩa liệu XML lưu trữ truy vấn theo định dạng phân cấp vốn có Để truy vấn liệu XML, DB2 cung cấp hai ngôn ngữ, SQL/XML XQuery Ngồi ra, DB2 có khả lí tưởng lập mục XML hỗ trợ cho việc xác nhận tính hợp lệ Lược đồ XML (XML Schema) Trong hầu hết hướng dẫn thi hành có cho DB2 áp dụng cho liệu XML, viết cung cấp thêm lời khuyên hiệu cho XML cụ thể Bài viết cập nhật cho DB2 9.5 [26 tháng năm 2009: mã hiệu chỉnh liệt kê 12 13. Biên tập.] Giới thiệu Hỗ trợ pureXML DB2 cung cấp khả hiệu linh hoạt để quản lý liệu XML bạn Hiệu ưu tiên cao cho nhiều ứng dụng XML; DBA, nhà thiết kế ứng dụng, chia sẻ khả họ để đảm bảo hiệu tốt Đầu tiên, có tất hướng dẫn thực thi DB2 truyền thống cho cấu hình cân CPU/bộ nhớ/đĩa, vùng bảng điều chỉnh vùng đệm, khóa, ghi chép, kế hoạch thực truy vấn v.v Tất chủ đề trình bày viết DB2 trước (xem Tài nguyên) có liên quan bạn quản lý liệu XML DB2 May mắn thay, số vấn đề khả tự nhiên DB2 xử lý quản lý lưu trữ tự động quản lý nhớ tự điều chỉnh Chúng cung cấp mức hiệu cao cho nhiều ứng dụng địi hỏi can thiệp thủ công Nhưng ứng dụng XML với yêu cầu thực thi tích cực lợi ích từ khía cạnh phụ hiệu Bài viết tập trung vào tình vậy, đưa lời khuyên hướng dẫn để đạt hiệu tối đa ứng dụng XML có liên quan DB2 Dưới 15 lời khuyên hiệu XML (không theo thứ tự cụ thể) mà thảo luận minh họa viết 15 lời khuyên bao gồm nhiều lĩnh vực, kinh nghiệm cho thấy ứng dụng với vấn đề hiệu thường cần áp dụng hai số lời khuyên để đạt Lời khuyên hiệu mong muốn  Lời khuyên 1: Sáng suốt lựa chọn độ chi tiết tài liệu XML bạn  Lời khuyên 2: Sử dụng DMS trang lớn để hiệu XML tốt  Lời khuyên 3: Khai thác tùy chọn lưu trữ cho XML: nội tuyến, nén vùng bảng riêng biệt  Lời khuyên 4: Cách cấu hình DB2 cho phép chèn nhanh số lượng lớn liệu XML  Lời khuyên 5: Sử dụng yếu tố giám sát đột xuất để kiểm tra hiệu XML  Lời khuyên 6: Hãy tăng cường xác nhận tính hợp lệ lược đồ XML  Lời khuyên 7: Trong biểu thức XPath, sử dụng đường dẫn cụ thể đầy đủ nhiều tốt  Lời khuyên 8: Định nghĩa mục thiên XML tránh đánh mục tất thứ  Lời khuyên 9: Đặt vị từ lọc tài liệu XMLEXISTS thay cho XMLQUERY  Lời khuyên 10: Sử dụng dấu ngoặc vuông [] để tránh vị từ Boolean XMLEXISTS  Lời khuyên 11: Sử dụng RUNSTATS để thu thập số liệu thống kê cho liệu mục XML  Lời khuyên 12: Làm để sử dụng khung nhìn xuất SQL/XML để trưng liệu quan hệ XML  Lời khuyên 13: Sử dụng khung nhìn XMLTABLE để trưng liệu XML định dạng quan hệ  Lời khuyên 14: Đối với truy vấn ngắn ứng dụng OLTP, sử dụng câu lệnh SQL/XML với dấu tham số  Lời khuyên 15: Tránh chuyển đổi trang mã chèn lấy XML Trong thảo luận lời khuyên hiệu này, giả định bạn quen thuộc với công việc thực hành hiệu quản trị DB2 với khái niệm hỗ trợ pureXML DB2 Ví dụ, bạn nên biết cột XML, mục XML làm để truy vấn liệu XML với SQL/XML XQuery Tất điều kiện cần trước trình bày viết xuất trước developerWorks (xem Tài nguyên) Các lời khuyên hiệu XML DB2 Lời khuyên 1: Sáng suốt lựa chọn độ chi tiết tài liệu XML bạn Khi bạn thiết kế ứng dụng XML cấu trúc tài liệu XML bạn, nói cụ thể, bạn có lựa chọn để xác định liệu nghiệp vụ giữ tài liệu XML Ví dụ, bảng phận chúng tơi đây, sử dụng tài liệu XML cho phận (độ chi tiết trung bình) Đây lựa chọn có lý phận có độ chi tiết trội mà ứng dụng truy cập xử lý liệu Theo cách khác, chúng tơi có định kết hợp nhiều chi nhánh phận nhiều phận vào tài liệu XML nhất, ví dụ: tất người thuộc đơn vị (độ chi tiết thô) Điều này, nhiên, tối ưu nhỏ thường xử lý phận vào lúc Bảng Tạo bảng dept( unitID char(8), deptdoc xml) unitID deptdoc Jim Qu WWPR 408 555 1212 Peter Pan 216 Matt Foreman 416 891 7301 WWPR 216 This dept supports sales world wide S-USE Chúng tơi định phải có tài liệu XML cho nhân viên (độ chi tiết cao), với thuộc tính "dept" cho nhân viên biết nhân viên thuộc phận Đây lựa chọn tốt nhân viên tự sử dụng đối tượng nghiệp vụ quan tâm, mà đối tượng thường nhân viên khác phận truy cập xử lý cách độc lập Nhưng, ứng dụng thường địi hỏi lúc tất nhân viên phận, tốt để tài liệu XML cho phận Cụ thể là, việc xử lý theo bó nhiều đối tượng nghiệp vụ độc lập tài liệu không nên DB2 sử dụng mục liệu XML để lọc mức cho tài liệu Vì vậy, độ chi tiết tài liệu XML bạn tốt hơn, lợi tiềm bạn cao việc truy cập theo mục Ngoài ra, ứng dụng bạn sử dụng trình phân tích cú pháp DOM để tiêu thụ XML lấy từ DB2, tài liệu nhỏ cho phép hiệu tốt Liên quan đến thiết kế tài liệu XML, câu hỏi thường gặp sử dụng thuộc tính so với phần tử lựa chọn ảnh hưởng đến hiệu Đây câu hỏi mơ hình hóa liệu câu hỏi hiệu Như vậy, câu hỏi cũ SGML, tiền thân XML người ta tranh cãi sôi mà không đạt đồng thuận Tuy nhiên, thực tế quan trọng kèm phần tử XML linh hoạt thuộc tính chúng lặp lại lồng Ví dụ, tài liệu phận chúng tôi, sử dụng phần tử "phone" phép chúng tơi có nhiều lần xuất "phone" nhân viên có nhiều số điện thoại Nó mở rộng trường hợp sau cần phải ngắt số điện thoại vào phân đoạn, nghĩa phần tử "phone" có phần tử cho mã nước, mã vùng, mã mở rộng, v.v Nếu "phone" thuộc tính phần tử nhân viên (employee), sau tồn lần cho nhân viên chúng tơi khơng thể thêm vào phần tử con, thuộc tính phone cản trở tiến hóa lược đồ theo thời gian Mặc dù bạn mơ hình hóa tất liệu bạn mà dùng thuộc tính nào, chúng lựa chọn trực quan cho mục tin biết trước không lặp lại (theo phần tử), khơng có trường Các thuộc tính làm cho XML ngắn chút chúng có thẻ đơn, khác với phần tử có thẻ bắt đầu thẻ kết thúc Trong DB2, thuộc tính sử dụng truy vấn, vị từ định nghĩa mục, dễ phần tử Do thuộc tính có khả mở rộng so với phần tử, nên DB2 áp dụng việc tối ưu hóa lưu trữ truy cập Điều cần xem lợi điểm hiệu năng, việc khích lệ chuyển đổi thuộc tính thành phần tử, đặc biệt khía cạnh mơ hình hóa liệu thực gọi phần tử Tóm lại, chọn độ chi tiết tài liệu XML bạn đáp ứng độ chi tiết truy cập trội dự liệu trước Khi có nghi ngờ, tốt theo hướng độ chi tiết cao tài liệu XML nhỏ Lời khuyên 2: Sử dụng DMS trang lớn để hiệu XML tốt DMS - Các vùng bảng quản lý sở liệu đảm bảo hiệu cao so với SMS - vùng bảng quản lý hệ điều hành Điều với liệu quan hệ chí cho việc truy cập đọc viết XML Trong DB2 9, theo mặc định vùng bảng tạo DMS Người ta đề xuất sử dụng vùng bảng DMS có vùng lưu trữ tự động cho vùng chứa DMS phát triển cần thiết mà khơng cần có can thiệp thủ công Nếu tài liệu XML lớn không vừa trang vùng bảng, DB2 phân chia tài liệu thành nhiều vùng lưu trữ nhiều trang Điều suốt ứng dụng bạn cho phép DB2 XML xử lý tài liệu XML đến ràng buộc giới hạn 2GB cho tài liệu Nói chung, số vùng (phân chia) cho tài liệu thấp hiệu tốt, đặc biệt việc chèn lấy tài liệu đầy đủ Nếu tài liệu không khít trang, số lượng phân chia cho tài liệu phụ thuộc vào kích thước trang (4KB, 8KB, 16KB 32KB) Các kích thước trang vùng bảng bạn lớn số lượng phân chia tiềm tàng cho tài liệu thấp Ví dụ, giả sử tài liệu cho bắt đầu chia thành bốn mươi trang 4KB Sau đó, lưu trữ tài liệu hai mươi trang 8KB, mười trang16KB năm trang 32KB, tương ứng Nếu tài liệu XML nhỏ đáng kể so với kích thước trang chọn, khơng có vùng bị lãng phí lưu trữ nhiều tài liệu nhỏ trang Theo kinh nghiệm, chọn kích thước trang cho liệu XML khơng nhỏ hai lần kích thước tài liệu dự kiến trung bình bạn, với giả thuyết lớn 32KB Nếu bạn sử dụng kích thước trang đơn cho liệu quan hệ liệu XML cho liệu mục, kích thước trang 32KB mang lại lợi ích cho liệu XML, bất lợi cho việc truy cập liệu mục quan hệ Trong trường hợp vậy, trang 16KB 8KB lựa chọn tốt để hoạt động tốt cho hai Lời khuyên 3: Khai thác tùy chọn lưu trữ cho XML: nội tuyến, nén vùng bảng riêng biệt Hãy xem xét bảng mẫu sau để thảo luận tùy chọn lưu trữ cho liệu XML Bảng chứa liệu quan hệ liệu XML: Liệt kê Bảng mẫu với liệu XML liệu quan hệ create table product(pid bigint, name varchar(20), brand varchar(35), category integer, price decimal, description XML); Với định nghĩa bảng này, theo mặc định liệu XML liệu quan hệ bảng lưu trữ mặc định vùng bảng Điều có nghĩa chúng sử dụng kích thước trang đệm vùng đệm Trong vùng bảng, liệu quan hệ lưu giữ đối tượng DAT, liệu XML nằm đối tượng XDA Điều tài liệu XML, LOB, q lớn khơng khít hàng đơn trang liệu bảng Sự bố trí mặc định đảm bảo hiệu tốt cho hầu hết kịch ứng dụng Nếu bạn thực phân tích hiệu thấy bạn cần phải có kích thước trang lớn cho liệu XML trừ trang có kích thước nhỏ cho liệu quan hệ hay mục, bạn sử dụng vùng bảng riêng biệt để đạt điều Khi bạn định nghĩa bảng, bạn hướng liệu "dài" vào vùng bảng riêng biệt có kích thước trang khác Dữ liệu dài bao gồm liệu LOB liệu XML Ví dụ sau định nghĩa hai vùng đệm hai vùng bảng, thứ có trang 4KB 32KB (Lưu ý vùng bảng ln địi hỏi phải có vùng đệm có kích thước trang vừa khít) Bảng sản phẩm ("product") gán cho vùng bảng "relData" có trang 4KB Trong vùng bảng lưu trữ tất cột nó, trừ cột mơ tả ("description") XML, lưu trữ trang 32KB vùng bảng "xmldata" Liệt kê Dữ liệu XML liệu quan hệ vùng bảng riêng biệt vùng đệm create bufferpool bp4k pagesize 4k; create bufferpool bp32k pagesize 32k; create tablespace relData pagesize 4K managed by automatic storage bufferpool bp4k; create tablespace xmlData pagesize 32K managed by automatic storage bufferpool bp32k; create table product(pid bigint, name varchar(20), brand varchar(35), category integer, price decimal, description XML) in relData passing info as "i") Truy vấn sử dụng dấu ngoặc vng, với có sai? Biểu thức XQuery biểu thức Boolean có dạng "exp1 exp2" Dưới cách viết truy vấn thích hợp để lọc hàng phép sử dụng mục: Liệt kê 10 Truy vấn để lọc hàng phép sử dụng mục select xmlquery('$i/customerinfo/name' passing info as "i") from customer where xmlexists('$i/customerinfo[phone = "905-555-4789" and name = "Matt Foreman"]' passing info as "i") Tóm lại, khơng sử dụng vị từ Boolean XMLEXISTS Hãy đặt vị từ ngoặc vuông, bao gồm "and" "or" Lời khuyên 11: Sử dụng RUNSTATS để thu thập số liệu thống kê cho liệu mục XML Tiện ích RUNSTATS mở rộng để thu thập số liệu thống kê liệu XML mục XML Trình tối ưu hóa dựa vào chi phí DB2 sử dụng số liệu thống kê để tạo kế hoạch thực hiệu cho truy vấn XQuery SQL/XML Do đó, tiếp tục sử dụng RUNSTATS bạn muốn cho liệu quan hệ Nếu bảng bạn có chứa liệu quan hệ liệu XML bạn muốn làm số liệu thống kê quan hệ, bạn thực RUNSTATS với mệnh đề "EXCLUDING XML COLUMNS" Không có mệnh đề này, hành vị mặc định hành vi ưa thích ln ln thu thập số liệu thống kê cho liệu quan hệ liệu XML Đối với liệu quan hệ liệu XML, bạn chọn mẫu để giảm thời gian cách thực runstats Trên tập liệu lớn, thống kê từ 10% liệu (hoặc chí hơn) thường đại diện cho tồn liệu Bất kể tỷ lệ phần trăm lấy mẫu mà bạn chọn, runstats cho phép bạn lấy mẫu hàng (lấy mẫu Bernoulli) trang (lấy mẫu hệ thống) Lấy mẫu mức hàng đọc tất trang liệu xem xét tỷ lệ phần trăm hàng trang tập hợp trang XDA tương ứng Lấy mẫu mức trang giảm đáng kể I/O đọc có tỷ lệ phần trăm trang liệu Vì vậy, lấy mẫu trang cải thiện cách đáng kể hiệu bảng bạn có chứa khơng XML, mà số lượng lớn liệu quan hệ Nhưng, lấy mẫu mức hàng tạo số liệu thống kê xác giá trị liệu quan hệ gộp lại mức độ cao Dưới số ví dụ Các lệnh runstats thu thập thống kê chi tiết cho bảng khách hàng tất mục mà khơng cần lấy mẫu Đây lý tưởng thời gian thực cho phép Lệnh thứ hai thu thập thống kê tương tự với 10% trang Trong nhiều trường hợp, điều cung cấp trình tối ưu hóa với gần thống kê xác lệnh đầu tiên, trả kết nhanh nhiều Lệnh thứ ba lấy mẫu 15% tất hàng, không thu thập số liệu thống kê phân phối áp dụng lấy mẫu cho mục mà lệnh lệnh thứ hai không làm Liệt kê 11 Sử dụng RUNSTATS để thu thập số liệu thống kê runstats on table myschema.customer with distribution on all columns and detailed indexes all; runstats on table myschema.customer with distribution on all columns and detailed indexes all tablesample system (10); runstats on table myschema.customer on all columns and sample detailed indexes all tablesample bernoulli (15); Tóm lại, DB2 tạo kế hoạch thực tốt thống kê XML có sẵn Sử dụng Runstats bạn muốn thường lệ sử dụng runstats có lấy mẫu để giảm thiểu thời gian thực Lời khuyên 12: Làm để sử dụng khung nhìn xuất SQL/XML để trưng liệu quan hệ XML Các hàm xuất SQL/XML cho phép bạn biến đổi liệu quan hệ thành định dạng XML Nó có ích để ẩn dấu hàm xuất SQL/XML định nghĩa khung nhìn, ứng dụng truy vấn khác chọn đơn giản tài liệu kiến thiết theo XML từ khung nhìn thay làm việc với hàm xuất Liệt kê 12 Các hàm xuất SQL/XML ẩn khung nhìn create table unit( unitID varchar(8), name varchar(20), manager varchar(20)); create view UnitView(unitID, name, unitdoc) as select unitID, name, XMLDOCUMENT( XMLELEMENT(NAME "Unit", XMLELEMENT(NAME "ID", u.unitID), XMLELEMENT(NAME "UnitName", u.name), XMLELEMENT(NAME "Mgr", u.manager) ) ) from unit u; Lưu ý bao gồm số cột quan hệ định nghĩa khung nhìn Điều không tạo dư thừa vật lý khung nhìn, khơng phải khung nhìn thực Việc trích cột quan hệ giúp truy vấn khung nhìn có hiệu Hãy nói cần phải tìm nạp tài liệu XML cho đơn vị cụ thể Tất ba truy vấn sau làm điều đó, truy vấn thứ ba có xu hướng thực tốt so với hai truy vấn Trong hai truy vấn đầu tiên, vị từ lọc biểu diễn dạng kiến thiết XML Nhưng, áp dụng vị từ XML cho cột quan hệ nằm bên mục Do đó, truy vấn cần khung nhìn để xây dựng XML cho tất đơn vị sau chọn cho đơn vị "WWPR" Đây tối ưu Có thể thực cách tối ưu nhỏ: Liệt kê 13 Các truy vấn thực cách tối ưu nhỏ select unitdoc from UnitView where xmlexists('$i/Unit[ID = "WWPR"]' passing unitdoc as "i"); for $u in db2-fn:xmlcolumn('UNITVIEW.UNITDOC')/Unit where $u/ID = "WWPR" return $u; Truy vấn thứ ba sử dụng vị từ quan hệ để đảm bảo có tài liệu XML cho "WWPR" xây dựng, dẫn đến thời gian chạy ngắn hơn, đặc biệt liệu lớn Truy vấn hoạt động tốt: Liệt kê 14 Truy vấn thực tốt select unitdoc from UnitView where UnitID = "WWPR"; Tóm lại, bao gồm cột quan hệ khung nhìn xuất SQL/XML truy vấn khung nhìn biểu diễn vị từ cột dạng kiến thiết từ XML Lời khuyên 13: Sử dụng khung nhìn XMLTABLE để trưng liệu XML định dạng quan hệ Cũng giống để tạo khung nhìn để trưng liệu quan hệ theo định dạng XML có ích lợi, bạn muốn sử dụng khung nhìn để trưng liệu XML theo định dạng quan hệ Cần có thận trọng tương tự Lời khuyên 12, theo cách ngược lại Hãy xem ví dụ sau, sử dụng hàm XMLTABLE SQL/XML để trả giá trị từ tài liệu XML theo định dạng bảng: Liệt kê 15 Giá trị trả từ tài liệu XML theo định dạng bảng create table customer(info XML); create view myview(CustomerID, Name, Zip, Info) as SELECT T.*, info FROM customer, XMLTABLE ('$c/customerinfo' passing info as "c" COLUMNS "CID" "Name" "Zip" INTEGER PATH './@Cid', VARCHAR(30) PATH './name', CHAR(12) PATH './addr/pcode' ) as T; Lưu ý chúng tơi có thơng tin cột XML định nghĩa khung nhìn để giúp truy vấn khung nhìn có hiệu Hãy nói bạn muốn lấy danh sách bảng ID tên khách hàng theo mã bưu điện cụ thể Cả hai truy vấn sau làm điều đó, truy vấn thứ hai có xu hướng thực tốt so với truy vấn đầu Trong truy vấn đầu tiên, vị từ lọc thể cột "Zip" CHAR hàm XMLTABLE tạo Nhưng, vị từ quan hệ áp dụng cho cột XML nằm bên mục Vì vậy, truy vấn địi hỏi khung nhìn để tạo hàng cho tất khách hàng sau chọn cho mã bưu điện (zip) "95.141" Đây tối ưu Truy vấn thứ hai sử dụng vị từ XML để bảo đảm có hàng với "95.141" bắt đầu tạo ra, dẫn đến thời gian chạy ngắn hơn, đặc biệt tập liệu lớn Liệt kê 16 Truy vấn với vị từ XML may perform suboptimal: select CustomerID, Name from myview where Zip = "95141"; will perform well: select CustomerID, Name from myView where xmlexists('$i/customerinfo[addr/pcode = "95141"]' passing info as "i"); Nếu bảng sở mà khung nhìn định nghĩa có chứa khơng cột XML mà cịn cột quan hệ với mục, bạn nên có cột quan hệ định nghĩa khung nhìn Nếu truy vấn dựa vào khung nhìn có chứa vị từ hạn chế cột quan hệ, DB2 sử dụng mục quan hệ để lọc hàng đủ điều kiện số lượng nhỏ sau áp dụng XMLTABLE vị từ lại cho kết tạm thời trước trả tập kết cuối Tóm lại, cẩn thận với khung nhìn XMLTABLE, mà chúng trưng liệu XML theo dạng quan hệ Khi có thể, bao gồm cột bổ sung định nghĩa khung nhìn cho vị từ lọc biểu diễn cột thay cột XMLTABLE Lời khuyên 14: Đối với truy vấn ngắn ứng dụng OLTP, sử dụng câu lệnh SQL/XML với dấu tham số Các truy vấn sở liệu ngắn thường thực nhanh tới mức thời gian biên dịch tối ưu hóa chúng phần đáng kể so với tổng số thời gian trả lời chúng Vì vậy, thật có ích để biên dịch ("chuẩn bị") chúng lần chuyển giá trị chữ vị từ lần thực Trong XQuery DB2 khơng hỗ trợ tham số ngồi, hàm XMLQUERY, XMLTABLE XMLEXISTS SQL/XML có hỗ trợ Chúng cho phép bạn chuyển dấu tham số SQL sang biến biểu thức XQuery nhúng Đây khuyến cáo cho ứng dụng có truy vấn ngắn lặp lại Liệt kê 17 Các giá trị chữ vị từ cố định (Hardcoded) for $c in db2-fn:xmlcolumn('CUSTOMER.INFO')/customer where $c/phone = "905-555-4789" return $c; select info from customer where xmlexists('$i/customerinfo[phone = "905-555-4789"]' passing info as "i") Liệt kê 18 Với dấu tham số select info from customer where xmlexists('$i/customerinfo[phone = $p]' passing info as "i", cast(? as varchar(12)) as "p") Tóm lại, truy vấn ngắn giao dịch OLTP nhanh câu lệnh chuẩn bị với dấu tham số Đối với XML, điều đòi hỏi SQL/XML chuyển tham số dạng SQL sang biểu thức XQuery Lời khuyên 15: Tránh chuyển đổi trang mã chèn lấy XML XML khác với kiểu liệu DB2 mã hóa ngồi Được mã hóa có nghĩa mã hóa liệu XML bạn suy diễn từ liệu Được mã hóa ngồi có nghĩa mã hóa suy diễn từ thơng tin bên Kiểu liệu biến ứng dụng mà bạn sử dụng để trao đổi liệu XML với DB2 xác định cách mã hóa suy diễn Nếu ứng dụng bạn sử dụng biến kiểu ký tự cho XML, mã hóa ngoài, tức trang mã ứng dụng Nếu bạn sử dụng kiểu liệu ứng dụng nhị phân, liệu XML coi mã hóa Được mã hóa có nghĩa mã hóa xác định Unicode Byte-Order mark (BOM – Đánh dấu thứ tự byte Unicode) khai báo mã hóa tài liệu XML, chẳng hạn như: Từ quan điểm thực thi khung nhìn, mục đích để tránh phép biến đổi trang mã nhiều tốt chúng tiêu thụ chu kỳ CPU vượt trội Dữ liệu XML mã hóa ưa dùng liệu mã hóa bên ngồi, ngăn ngừa phép biến đổi trang mã không cần thiết Điều có nghĩa ứng dụng bạn, bạn nên hướng kiểu liệu mã nhị phân kiểu ký tự Ví dụ, CLI bạn sử dụng SQLBindParameter() để ràng buộc dấu tham số cho đệm liệu đầu vào, bạn nên sử dụng đệm liệu SQL_C_BINARY SQL_C_CHAR, SQL_C_DBCHAR, SQL_C_WCHAR Khi chèn liệu XML ứng dụng Java, đọc liệu XML luồng nhị phân (setBinaryStream) tốt chuỗi (setString) Tương tự, ứng dụng Java bạn nhận XML từ DB2 ghi vào tệp, phép biến đổi trang mã xảy XML viết liệu nhị phân Khi bạn lấy liệu XML từ DB2 đưa vào ứng dụng bạn, Tuần tự hóa hoạt động ngược với phân tích cú pháp XML Nó q trình biến đổi định dạng XML bên DB2 (một thể giống cây, duyệt) thành định dạng XML văn mà ứng dụng bạn hiểu Trong hầu hết trường hợp, tốt DB2 thực hóa ngầm định Điều có nghĩa câu lệnh SQL/XML bạn đơn giản chọn giá trị kiểu-XML ví dụ sau DB2 thực hóa vào biến ứng dụng bạn hiệu tốt: Liệt kê 19 Truy vấn với hóa ngầm định create table customer(info XML); select info from customer where ; select xmlquery('$i/customerinfo/name' passing info as "i") from customer where ; Nếu ứng dụng xử lý tài liệu XML lớn, sử dụng trình định vị (locator) LOB có ích Điều địi hỏi hóa tường minh sang kiểu LOB, tốt BLOB, hóa rõ ràng sang kiểu ký tự CLOB đưa khía cạnh mã phép biến đổi trang mã khơng cần thiết Sự hóa tường minh sử dụng hàm XMLSERIALIZE: select XMLSERIALIZE(info as BLOB(1M)) from customer where ; Tóm lại, sử dụng kiểu liệu nhị phân ứng dụng bạn để trao đổi XML với DB2 điều tránh phép biến đổi trang mã khơng cần thiết Có ý thức khía cạnh mã có nghi ngờ, theo hướng dẫn chi tiết tài liệu hướng dẫn DB2 Tóm tắt Để đạt hiệu XML tối đa DB2, khởi đầu tốt sử dụng tính tự trị DB2 quản lý lưu trữ tự động quản lý nhớ tự điều chỉnh Điều đảm bảo hiệu bên ngồi gói, thích hợp cho nhiều ứng dụng Nó giải phóng thời gian DBA quý giá việc hiệu chỉnh hiệu mong muốn, cần thiết Tất hiểu biết hiệu DB2 áp dụng cho XML trình bày nhiều viết developerWorks liệt kê Trên hết, 15 lời khuyên viết giúp bạn khía cạnh chung chuyên hiệu XML Nếu bạn cần cải thiện hiệu ứng dụng XML bạn, bạn không cần phải áp dụng tất 15 lời khuyên mà cần áp dụng lời khuyên thực cần thiết tình hình bạn Ví dụ, giảm biến đổi trang mã không cần thiết không giúp đỡ hệ thống bạn có I/O bị ràng buộc nhiều cấu hình vùng bảng khơng phù hợp Tương tự vậy, sử dụng dấu tham số SQL/XML khơng giúp cho hiệu truy vấn bạn thực cần phải thực runstats để kích hoạt kế hoạch thực truy vấn tốt Tóm lại, lời khuyên giúp bạn tránh vấn đề hiệu năng, dừng vấn đề hiệu theo dõi trước tiên cần nhận biết nguyên nhân tắc nghẽn Các công cụ chẩn đốn chuẩn DB2 giải thích trực quan, db2exfmt giám sát đột xuất sử dụng cho việc kiểm tra hiệu XML giống cho liệu quan hệ ... Lời khuyên 15: Tránh chuyển đổi trang mã chèn lấy XML Trong thảo luận lời khuyên hiệu này, giả định bạn quen thuộc với công việc thực hành hiệu quản trị DB2 với khái niệm hỗ trợ pureXML DB2 Ví dụ,... SQL/XML khơng giúp cho hiệu truy vấn bạn thực cần phải thực runstats để kích hoạt kế hoạch thực truy vấn tốt Tóm lại, lời khuyên giúp bạn tránh vấn đề hiệu năng, dừng vấn đề hiệu theo dõi trước... yêu cầu thực thi tích cực lợi ích từ khía cạnh phụ hiệu Bài viết tập trung vào tình vậy, đưa lời khuyên hướng dẫn để đạt hiệu tối đa ứng dụng XML có liên quan DB2 Dưới 15 lời khuyên hiệu XML

Ngày đăng: 11/05/2021, 04:54

Xem thêm:

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w