Các khái niệm cơ bản của DB2: Giới thiệu các bảng truy vấn cụ thể hóa Roman Melnyk, Phát triển thông tin DB2 pptx

24 344 0
Các khái niệm cơ bản của DB2: Giới thiệu các bảng truy vấn cụ thể hóa Roman Melnyk, Phát triển thông tin DB2 pptx

Đ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

Các khái niệm DB2: Giới thiệu bảng truy vấn cụ thể hóa Roman Melnyk, Phát triển thơng tin DB2 Tóm tắt: Định nghĩa bảng truy vấn cụ thể hóa (MQT) dựa kết truy vấn MQT cải thiện đáng kể hiệu suất truy vấn Bài viết giới thiệu cho bạn MQT, bảng tóm tắt, bảng phân tầng, ví dụ làm việc, cho bạn cách để xây dựng chạy bảng truy vấn cụ thể hóa Bảng truy vấn cụ thể hóa (MQT) bảng xác định dựa kết truy vấn Các liệu chứa MQT có nguồn gốc từ nhiều bảng mà dựa vào chúng, người ta cụ thể hố định nghĩa bảng truy vấn Bảng Tóm tắt (hoặc bảng tóm tắt tự động, AST), quen thuộc với người sử dụng sở liệu thông dụng DB2 (UDB) IBM Linux, UNIX, Windows (DB2 UDB), coi dạng đặc biệt MQT Việc chọn đầy đủ phần định nghĩa bảng tóm tắt, chứa mệnh đề GROUP BY để tổng hợp liệu từ bảng tham chiếu câu chọn Bạn nghĩ MQT loại khung nhìn cụ thể hóa Cả khung nhìn lẫn MQT xác định dựa truy vấn Truy vấn mà khung nhìn dựa vào chạy khung nhìn tham chiếu; nhiên, thực tế MQT lưu giữ kết truy vấn làm liệu, bạn làm việc với liệu MQT thay liệu bảng nêu Các bảng truy vấn cụ thể hóa cải thiện cách đáng kể hiệu suất truy vấn, đặc biệt truy vấn phức tạp Nếu trình tối ưu xác định truy vấn phần truy vấn giải cách sử dụng MQT, truy vấn viết lại để tận dụng lợi MQT Có thể xác định MQT thời gian tạo bảng hệ thống hay người dùng trì Các phần giới thiệu cho bạn hai loại MQT, bảng tóm tắt bảng phân tầng Các ví dụ sau yêu cầu kết nối tới sở liệu SAMPLE; chưa có sở liệu SAMPLE hệ thống, bạn tạo cách nhập lệnh db2sampl từ dấu nhắc lệnh Các MQT trì hệ thống Các liệu loại bảng truy vấn cụ thể hóa trì hệ thống Khi bạn tạo MQT loại này, bạn xác định liệu bảng loại liệu REFRESH IMMEDIATE (làm ngay) REFRESH DEFERRED (làm sau) Từ khóa REFRESH cho phép bạn xác định cách liệu được trì Làm sau có nghĩa liệu bảng làm lúc cách sử dụng câu lệnh REFRESH TABLE Các MQT, dù làm sau, hệ thống trì, khơng cho phép hoạt động chèn, cập nhật, xóa thực chúng Tuy nhiên, MQT với REFRESH IMMEDIATE hệ thống trì cập nhật với thay đổi bảng nêu kết phép chèn, cập nhật, xóa Liệt kê cho thấy ví dụ tạo MQT REFRESH IMMEDIATE hệ thống trì Bảng có tên EMP dựa bảng EMPLOYEE DEPARTMENT kể sở liệu SAMPLE Vì MQT với REFRESH IMMEDIATE u cầu khóa đơn từ bảng tham chiếu truy vấn xuất danh sách chọn, trước tiên ta xác định ràng buộc đơn cột EMPNO bảng EMPLOYEE cột DEPTNO bảng DEPARTMENT Mệnh đề DATA INITIALLY DEFERRED đơn giản ngầm ý liệu không chèn vào bảng phần câu lệnh CREATE TABLE Sau tạo, MQT trạng thái chờ kiểm tra (xem bảng Demystifying trạng thái không gian bảng), truy vấn câu lệnh SET INTEGRITY thực Mệnh đề IMMEDIATE CHECKED quy định liệu kiểm tra truy vấn xác định MQT làm mới; mệnh đề NOT INCREMENTAL định việc kiểm tra tính tồn vẹn thực toàn bảng Một truy vấn thực bảng truy vấn cụ thể hóa EMP cho thấy lúc điền đầy đủ liệu Liệt kê Tạo MQT hệ thống trì connect to sample alter table employee add unique (empno) alter table department add unique (deptno) create table emp as (select e.empno, e.firstnme, e.lastname, e.phoneno, d.deptno, substr(d.deptname, 1, 12) as department, d.mgrno from employee e, department d where e.workdept = d.deptno) data initially deferred refresh immediate set integrity for emp immediate checked not incremental select * from emp EMPNO FIRSTNME LASTNAME PHONENO DEPTNO DEPARTMENT MGRNO - - -000010 CHRISTINE HAAS 000020 MICHAEL THOMPSON 000030 SALLY 000050 JOHN KWAN 3476 4738 C01 SPIFFY COMPU 000010 B01 PLANNING 000020 INFORMATION 000030 GEYER 6789 E01 STERN 6423 D11 MANUFACTURIN 000060 PULASKI 7831 D21 ADMINISTRATI 000070 000060 IRVING 000070 EVA 3978 A00 000090 EILEEN HENDERSON 000100 THEODORE SPENSER 000110 VINCENZO LUCCHESSI SUPPORT SERV 000050 5498 E11 OPERATIONS 000090 0972 E21 SOFTWARE SUP 000100 3490 A00 SPIFFY COMPU 000010 000120 SEAN O'CONNELL 000130 DOLORES 2167 A00 QUINTANA 4578 SPIFFY COMPU 000010 C01 INFORMATION 000030 000340 JASON GOUNOT 5698 E21 SOFTWARE SUP 000100 32 record(s) selected connect reset Các MQT trì người dùng Các liệu loại bảng truy vấn cụ thể hóa người dùng trì Chỉ có bảng truy vấn cụ thể hóa REFRESH DEFERRED định nghĩa MAINTAINED BY USER, người dùng trì Câu lệnh REFRESH TABLE (sử dụng cho MQT hệ thống trì) khơng thể dùng với MQT người sử dụng trì Các MQT người dùng trì cho phép thực hoạt động chèn, cập nhật, xóa với chúng Liệt kê cho thấy ví dụ tạo MQT với REFRESH DEFERRED người sử dụng trì Bảng tên ONTARIO_1995_SALES_TEAM dựa bảng EMPLOYEE SALES sở liệu SAMPLE Như trên, mệnh đề DATA INITIALLY DEFERRED ngầm ý liệu không chèn vào bảng phần câu lệnh CREATE TABLE Sau tạo, MQT trạng thái chờ kiểm tra (Xem bảng Demystifying tình trạng không gian bảng), truy vấn thực câu lệnh SET INTEGRITY với Mệnh đề MATERIALIZED QUERY IMMEDIATE UNCHECKED quy định bảng phải bật chức kiểm tra tính tồn vẹn, để đưa khỏi tình trạng chờ kiểm tra mà khơng bị kiểm tra việc vi phạm tính tồn vẹn Tiếp theo, để điền số liệu vào MQT, đưa vào liệu xuất từ bảng EMPLOYEE SALES Truy vấn xuất phù hợp với truy vấn xác định cho MQT Sau chèn ghi khác vào bảng ONTARIO_1995_SALES_TEAM Truy vấn thực bảng truy vấn cụ thể hóa ONTARIO_1995_SALES_TEAM cho thấy lúc chưa điền đầy đủ liệu nhập vào đưa vào, chứng tỏ MQT người sử dụng trì thực sửa đổi trực tiếp Liệt kê Tạo MQT người sử dụng trì connect to sample create table ontario_1995_sales_team as (select distinct e.empno, e.firstnme, e.lastname, e.workdept, e.phoneno, 'Ontario' as region, year(s.sales_date) as year from employee e, sales s where e.lastname = s.sales_person and year(s.sales_date) = 1995 and left(s.region, 3) = 'Ont') data initially deferred refresh deferred maintained by user set integrity for ontario_1995_sales_team materialized query immediate unchecked export to ontario_1995_sales_team.del of del select distinct e.empno, e.firstnme, e.lastname, e.workdept, e.phoneno, 'Ontario' as region, year(s.sales_date) as year from employee e, sales s where e.lastname = s.sales_person and year(s.sales_date) = 1995 and left(s.region, 3) = 'Ont' Number of rows exported: import from ontario_1995_sales_team.del of del insert into ontario_1995_sales_team Number of rows committed =2 insert into ontario_1995_sales_team values ('006900', 'RUSS', 'DYERS', 'D44', '1234', 'Ontario', 1995) select * from ontario_1995_sales_team EMPNO FIRSTNME LASTNAME WORKDEPT PHONENO REGION YEAR - - - 000110 VINCENZO 000330 WING LUCCHESSI LEE E21 A00 3490 2103 Ontario Ontario 1995 1995 006900 RUSS DYERS D44 1234 Ontario 1995 record(s) selected connect reset Bảng tóm tắt Bạn nhớ lại bảng tóm tắt loại bảng MQT đặc biệt mà lựa chọn đầy đủ chứa mệnh đề GROUP BY nhằm tóm tắt liệu từ bảng tham chiếu câu lựa chọn Liệt kê ví dụ đơn giản để tạo bảng tóm tắt Bảng tên SALES_SUMMARY dựa bảng SALES nêu sở liệu SAMPLE Và mệnh đề DATA INITIALLY DEFERRED có nghĩa liệu không chèn vào bảng phần câu lệnh CREATE TABLE Mệnh đề DATA INITIALLY DEFERRED ngầm định liệu bảng làm lúc cách sử dụng câu lệnh REFRESH TABLE Một truy vấn cho MQT sau tạo, trước sử dụng câu REFRESH TABLE gây lỗi Sau câu lệnh REFRESH TABLE thực hiện, truy vấn chạy thành cơng Hoạt động chèn sau vào bảng SALES, sau việc làm bảng tóm tắt truy vấn bảng tóm tắt, cho thấy thay đổi bảng nêu thể bảng tóm tắt: tổng doanh số nhân viên bán hàng Lee khu vực Nam Ontario tăng lên 100 Ta thấy hành vi tương tự ứng với việc cập nhật xóa bảng SALES kể Ví dụ Tạo bảng tóm tắt connect to sample create table sales_summary as (select sales_person, region, sum(sales) as total_sales from sales group by sales_person, region) data initially deferred refresh deferred select * from sales_summary SALES_PERSON REGION TOTAL_SALES - - SQL0668N Operation not allowed for reason code "1" on table "MELNYK.SALES_SUMMARY" SQLSTATE=57016 refresh table sales_summary select * from sales_summary SALES_PERSON REGION TOTAL_SALES - - GOUNOT Manitoba GOUNOT Ontario-North GOUNOT Ontario-South 10 GOUNOT Quebec LEE Manitoba LEE Ontario-North 15 24 23 LEE Ontario-South LEE Quebec 34 26 LUCCHESSI Manitoba LUCCHESSI Ontario-South LUCCHESSI Quebec 11 record(s) selected insert into sales values ('06/28/2005', 'LEE', 'Ontario-South', 100) refresh table sales_summary select * from sales_summary SALES_PERSON REGION TOTAL_SALES - - LEE Ontario-North LEE Ontario-South 134 LEE Quebec 26 11 record(s) selected update sales set sales = 50 where sales_date = '06/28/2005' and sales_person = 'LEE' and region = 'Ontario-South' refresh table sales_summary select * from sales_summary SALES_PERSON REGION TOTAL_SALES - - LEE Ontario-North LEE Ontario-South 84 LEE Quebec 26 11 record(s) selected delete from sales where sales_date = '06/28/2005' and sales_person = 'LEE' and region = 'Ontario-South' refresh table sales_summary select * from sales_summary SALES_PERSON REGION TOTAL_SALES - - LEE Ontario-North LEE Ontario-South 34 LEE Quebec 11 record(s) selected connect reset 26 Các bảng phân tầng Bạn làm nhiều lên với MQT có REFRESH DEFERRED có bảng phân tầng gắn liền với Bảng phân tầng thu thập thay đổi cần áp dụng để đồng MQT với bảng kèm Bạn tạo bảng phân tầng cách sử dụng câu lệnh CREATE TABLE; bảng kể MQT sửa đổi, thay đổi truyền nối vào bảng phân tầng Ý tưởng sử dụng bảng phân tầng để bước làm MQT, tái tạo MQT từ đầu Sự bảo trì gia tăng đảm bảo hiệu suất cải thiện đáng kể Bảng phân tầng lược bớt hoạt động làm hoàn tất Sau tạo, bảng phân tầng trạng thái chờ (khơng bền); phải đưa khỏi trạng thái trước bắt đầu thu thập thay đổi bảng nêu Bạn thực điều cách sử dụng câu lệnh SET INTEGRITY Liệt kê cho thấy ví dụ cách sử dụng bảng phân tầng với bảng tóm tắt Bảng tóm tắt tên EMP_SUMMARY dựa bảng nêu EMPLOYEE sở liệu SAMPLE Bạn nhớ lại mệnh đề DATA INITIALLY DEFERRED có nghĩa liệu khơng chèn vào bảng phần câu lệnh CREATE TABLE Mệnh đề REFRESH DEFERRED với nghĩa liệu bảng làm lúc cách sử dụng câu lệnh REFRESH TABLE Bảng phân tầng tên EMP_SUMMARY_S kết hợp với bảng tóm tắt EMP_SUMMARY Mệnh đề PROPAGATE IMMEDIATE quy định thay đổi bảng nêu phần chèn, cập nhật, xóa xếp tầng vào bảng phân tầng Câu lệnh SET INTEGRITY dùng cho hai bảng để đưa chúng khỏi trạng thái chờ Không bất ngờ truy vấn bảng tóm tắt lúc khơng cho liệu Câu lệnh REFRESH TABLE cho cảnh báo, nhắc "tính tồn vẹn liệu khơng gia tăng chưa xác minh." Đây không điều bất ngờ Một truy vấn khác bảng tóm tắt khơng cho liệu Tuy nhiên, sau chèn hàng liệu vào bảng EMPLOYEE nêu ra, truy vấn bảng phân tầng EMP_SUMMARY_S trả hàng, tương ứng với liệu vừa chèn vào Bảng phân tầng có ba cột giống bảng tóm tắt bên nó, cộng thêm hai cột hệ thống sử dụng: GLOBALTRANSID (ID giao tác tổng thể hàng nhân lên) GLOBALTRANSTIME (dấu thời gian giao tác) Truy vấn khác bảng tóm tắt khơng cho liệu, sau câu lệnh REFRESH TABLE thực lần này, truy vấn chạy thành cơng Liệt kê Sử dụng bảng phân tầng với bảng tóm tắt connect to sample create table emp_summary as (select workdept, job, count(*) as count from employee group by workdept, job) data initially deferred refresh deferred create table emp_summary_s for emp_summary propagate immediate set integrity for emp_summary materialized query immediate unchecked set integrity for emp_summary_s staging immediate unchecked select * from emp_summary WORKDEPT JOB COUNT - record(s) selected refresh table emp_summary SQL1594W Integrity of non-incremental data remains unverified by the database manager SQLSTATE=01636 select * from emp_summary WORKDEPT JOB COUNT - record(s) selected insert into employee values ('006900', 'RUSS', 'L', 'DYERS', 'D44', '1234', '1960-05-05', 'FIELDREP', 5, 'M', '1940-04-02', 10000, 100, 1000) select * from emp_summary_s WORKDEPT JOB COUNT GLOBALTRANSID GLOBALTRANSTIME - - - D44 FIELDREP x'00000000000000CD' x'20050822201344536158000000' record(s) selected select * from emp_summary WORKDEPT JOB COUNT - record(s) selected refresh table emp_summary SQL1594W Integrity of non-incremental data remains unverified by the database manager SQLSTATE=01636 select * from emp_summary WORKDEPT JOB COUNT D44 FIELDREP 1 record(s) selected connect reset Tóm tắt Khung nhìn danh mục hệ thống SYSCAT.TABDEP chứa hàng phụ thuộc mà bảng truy vấn cụ thể hóa có vài đối tượng khác Bạn truy vấn khung nhìn để có tóm tắt phụ thuộc cho MQT mà ta tạo (Liệt kê 5) Các MQT có giá trị DTYPE 'S.' Cột TABNAME liệt kê tên MQT, cột BNAME liệt kê tên đối tượng sở liệu mà MQT tương ứng dựa vào Cột BTYPE xác định loại đối tượng: 'T' cho bảng, "I" cho mục 'F' cho cá thể chức Liệt kê Truy vấn khung nhìn danh mục hệ thống SYSCAT.TABDEP để xem phụ thuộc MQT đối tượng sở liệu khác connect to sample select substr(tabname,1,24) as tabname, dtype, substr(bname,1,24) as bname, btype from syscat.tabdep where tabschema = 'MELNYK' and dtype = 'S' TABNAME DTYPE BNAME BTYPE - EMP S DEPARTMENT EMP S EMPLOYEE EMP S SQL050829104058970 I EMP S SQL050829104058800 I EMP_SUMMARY S T T EMPLOYEE T ONTARIO_1995_SALES_TEAM S LEFT1 F ONTARIO_1995_SALES_TEAM S SALES T ONTARIO_1995_SALES_TEAM S EMPLOYEE SALES_SUMMARY S SALES T T record(s) selected connect reset Chúng ta thấy bảng truy vấn cụ thể hoá, xác định theo kết truy vấn, xem loại khung nhìn cụ thể hóa Các MQT quan trọng chúng làm giảm đáng kể thời gian cần cho truy vấn phức tạp Bài viết giới thiệu cho bạn khái niệm MQT hệ thống trì MQT trì người sử dụng, bảng tóm tắt bảng phân tầng, khái niệm minh họa cách ví dụ làm việc mà bạn tự chạy Để tìm hiểu thêm bảng truy vấn cụ thể hóa để biết thêm thông tin chi tiết chủ đề đề cập viết này, xin truy cập Trung tâm Thông tin DB2 Mục lục  Các MQT trì hệ thống  Các MQT trì người dùng  Bảng tóm tắt  Các bảng phân tầng  Tóm tắt ... 000100 32 record(s) selected connect reset Các MQT trì người dùng Các liệu loại bảng truy vấn cụ thể hóa người dùng trì Chỉ có bảng truy vấn cụ thể hóa REFRESH DEFERRED định nghĩa MAINTAINED... ta thấy bảng truy vấn cụ thể hoá, xác định theo kết truy vấn, xem loại khung nhìn cụ thể hóa Các MQT quan trọng chúng làm giảm đáng kể thời gian cần cho truy vấn phức tạp Bài viết giới thiệu cho... thiệu cho bạn khái niệm MQT hệ thống trì MQT trì người sử dụng, bảng tóm tắt bảng phân tầng, khái niệm minh họa cách ví dụ làm việc mà bạn tự chạy Để tìm hiểu thêm bảng truy vấn cụ thể hóa để biết

Ngày đăng: 07/08/2014, 09:23

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan