黄a在线观看-黄a在线-黄a大片-黄色片在线看-黄色毛片免费-黄色大片网站

您的位置:首頁技術文章
文章詳情頁

提高商業智能環境中DB2查詢的性能(1)

瀏覽:251日期:2023-11-08 10:19:40
高效地運行大型查詢,是商業智能環境中的頂級性能挑戰。學習在這種環境中提高 IBM® DB2® 數據服務器查詢性能的技巧。逐步了解各種不同的方法,然后在自己的系統上進行試驗。將每種方法應用于一條 SQL 語句,并使用 db2batch 工具評測性能。簡介本文主要討論可以使決策支持系統(DSS)中的大型查詢高效地執行的一些方法。這些查詢通常都是訪問較多數據的單純 select 查詢。下面是我們要討論的一些方法:1、建立適當的參照完整性約束2、使用物化查詢表(MQT)將表復制到其它數據庫分區,以答應非分區鍵列上的合并連接3、使用多維集群(MDC)4、使用表分區(DB2® 9 的新功能)5、結合使用表分區和多維集群6、使用 MQT 預先計算聚合結果本文中的例子針對 Windows 平臺上運行的 DB2 9。但是,其中的概念和信息對于任何平臺都是有用的。由于大多數商業智能(BI)環境都使用 DB2 Database Partitioning Feature(DPF,DB2 數據庫分區特性),我們的例子也使用 DPF 將數據劃分到多個物理和邏輯分區之中。數據庫布局和設置本節描述用于在我們的系統上執行測試的數據庫的物理和邏輯布局。星型模式布局本文使用如下所示的星型模式:清單 1. 星型模式 PRODUCT_DIM DATE_DIM/  / SALES_FACT | | STORE_DIM其中的表的定義如下:表名 類型 列名 數據類型 列描述 SALES_FACTFACT TABLEDATE_IDDATE產品售出日期PRODUCT_IDINT所購買產品的標識符STORE_IDINT出售產品的商店的標識符QUANTITYINT這次交易中售出產品的數量PRICEINT產品購買價格。[為了簡單起見,該字段為整型,但是使用小數型更符合實際]TRANSACTION_DETAILSCHAR(100)關于此次交易的描述/具體信息DATE_DIMDIMENSION TABLEDATE_ID NOT NULLDATE惟一標識符MONTHINT日期記錄所屬的月份QUARTERINT日期記錄所屬的季度(第 1、第 2、第 3 或第 4 季度)YEARINT日期記錄所屬的年份PRODUCT_DIMDIMENSION TABLEPRODUCT_ID NOT NULLINT產品惟一標識符PRODUCT_DESCCHAR(20)對產品的描述MODELCHAR(200)產品型號MAKECHAR(50)產品的質地STORE_DIMDIMENSION TABLESTORE_ID NOT NULLINT商店惟一標識符LOCATIONCHAR(15)商店位置DISTRICTCHAR(15)商店所屬街區REGIONCHAR(15)商店所屬區域事實表 SALES_FACT 包含 2006 年的總體銷售信息。它包括產品售出日期、產品 ID、銷售該產品的商店的 ID、售出的特定產品的數量,以及產品的價格。事實表中還添加了 TRANSACTION_DETAILS 列,以便在從事實表中訪問數據時生成更多的 I/O。維度表 DATE_DIM 包含商店開放期間的惟一的日期和相應的月份、季度和年份信息。維度表 PRODUCT_DIM 包含公司所銷售的不同產品。每種產品有一個惟一的產品 ID 和一個產品描述、型號以及質地。維度表 STORE_DIM 包含不同的商店 ID 和商店的位置、所屬街區以及所屬區域等信息。數據庫分區信息數據庫分區組名 數據庫分區數 FACT_GROUP0,1,2,3DATE_GROUP1PRODUCT_GROUP2STORE_GROUP3各表都位于它自己的分區組中。3 個維度表都比較小,所以它們位于一個數據庫分區上。而事實表則跨 4 個分區。表空間信息表空間名 數據庫分區組 表 FACT_SMSFACT_GROUPSALES_FACTDATE_SMSDATE_GROUPDATE_DIMPRODUCT_SMSPRODUCT_GROUPPRODUCT_DIMSTORE_SMSSTORE_GROUPSTORE_DIM各表都位于自己的表空間中。還有一種常見的方法是將這 3 個維度表放在同一個表空間中。緩沖池信息本文中的測試所使用的默認緩沖池是 IBMDEFAULTBP,該緩沖池由 1,000 個 4K 的頁面組成。在本文的測試中,所有表空間共享這個緩沖池。在通常的 BI 環境中,會創建不同的緩沖池。主查詢下面的查詢用于測試本文中討論的各種不同的方法。該查詢執行一個向外連接,比較二月份和十一月份 10 家商店的銷售信息。清單 2. 主查詢 [Query1.sql]WITH TMP1 (MONTH_1,STORE,REGION,DISTRICT,AMOUNT_1) AS( SELECT D.MONTH AS MONTH, S.STORE_ID AS STORE_ID, S.DISTRICT AS DISTRICT, S.REGION AS REGION, SUM(F1.QUANTITY * F1.PRICE) AS AMOUNT FROM SKAPOOR.SALES_FACT F1, SKAPOOR.DATE_DIM D, SKAPOOR.PRODUCT_DIM P, SKAPOOR.STORE_DIM S WHERE P.MODEL LIKE '%model%' AND F1.DATE_ID=D.DATE_ID AND F1.PRODUCT_ID=P.PRODUCT_ID AND F1.STORE_ID=S.STORE_ID AND F1.DATE_ID BETWEEN '2006-01-01' AND '2006-01-31' AND F1.STORE_ID IN (29, 30, 42, 55, 67, 72, 82, 99, 123, 199) AND D.MONTH = 1 GROUP BY S.STORE_ID,S.DISTRICT,S.REGION,D.MONTH) ,TMP2 (MONTH_11,STORE,REGION,DISTRICT,AMOUNT_11) AS( SELECT D1.MONTH AS MONTH, S1.STORE_ID AS STORE_ID, S1.DISTRICT AS DISTRICT, S1.REGION AS REGION, SUM(F2.QUANTITY * F2.PRICE) AS AMOUNT FROM SKAPOOR.SALES_FACT F2, SKAPOOR.DATE_DIM D1, SKAPOOR.PRODUCT_DIM P1, SKAPOOR.STORE_DIM S1 WHERE P1.MODEL LIKE '%model%' AND F2.DATE_ID=D1.DATE_ID AND F2.PRODUCT_ID=P1.PRODUCT_ID AND F2.STORE_ID=S1.STORE_ID AND F2.DATE_ID BETWEEN '2006-11-01' AND '2006-11-30' AND F2.STORE_ID IN (29, 30, 42, 55, 67, 72, 82, 99, 123, 199) AND D1.MONTH=11 GROUP BY S1.STORE_ID,S1.DISTRICT,S1.REGION,D1.MONTH)SELECT A.*, B.*FROM TMP1 A LEFT OUTER JOIN TMP2 B ON  (A.STORE=B.STORE AND A.REGION=B.REGION AND A.DISTRICT=B.DISTRICT)ORDER BY A.AMOUNT_1 DESC, B.AMOUNT_11 DESC;環境設置本文的測試是使用以下環境執行的:清單 3. db2levelDB2 9 Enterprise Edition:DB21085I Instance "DB2" uses "32" bits and DB2 code release "SQL09010" withlevel identifier "02010107".Informational tokens are "DB2 9.1.0.356", "s060629", "NT32", and Fix Pack "0".Product is installed at "C:PROGRA~1IBMSQLLIB" with DB2 Copy Name "DB2COPY1".清單 4. 操作系統System: WIN32_NT SKAPOOR Service Pack 2 5.1 x86 Family 15, model 4, stepping 3清單 5. 硬件CPU: total:2 online:2 Cores per socket:1 Threading degree per core:2Physical Memory(MB): total:2551 free:1988 available:1949Virtual Memory(MB): total:4950 free:6575Swap Memory(MB): total:2399 free:45871 Physical disk Size 100GB空間需求為了重新創建本文中描述的所有測試用例,需要高達 20Gb 的磁盤空間來存放數據和日志文件。其中將近 13Gb 的空間要分配給日志文件。我們要使用循環日志記錄,分配 100 個主日志:清單 6. 用于日志的數據庫配置Log file size (4KB) (LOGFILSIZ) = 8192Number of primary log files(LOGPRIMARY) = 100Number of secondary log files  (LOGSECOND) = 150略加修改為事實表填充數據的腳本,即可減少日志文件所需的磁盤空間。本文的后面將對此進行討論。設置數據庫第一步是創建一個測試數據庫。在本文的測試中,創建了 4 個邏輯數據分區。在 etcservices 文件中,應確保有足夠的端口用于創建 4 個數據分區。在我們的測試環境中,文件 C:WINDOWSsystem32driversetcservices 中包含關于實例 "DB2" 的以下內容:清單 7. services 文件的內容DB2_DB2  60000/tcpDB2_DB2_1 60001/tcpDB2_DB2_2 60002/tcpDB2_DB2_END  60003/tcpDB2c_DB2 50000/tcp為向實例添加數據庫分區,可使用 DB2 CLP 執行以下命令:清單 8. 使用 db2ncrt 命令創建數據庫分區db2stopdb2ncrt /n:1 /u:username,password /i:DB2 /m:machine /p:1db2ncrt /n:2 /u:username,password /i:DB2 /m:machine /p:2db2ncrt /n:3 /u:username,password /i:DB2 /m:machine /p:3其中 /u 選項所表示的用戶名和密碼,/m 選項所表示的計算機名,以及 /i 選項所表示的實例名應該根據您自己的環境加以修改。創建數據庫創建數據庫 DSS_DB。這里使用 D: 盤存儲該數據庫。請根據您自己的環境進行調整。清單 9. 創建數據庫的命令db2 create database dss_db on D:;數據庫和數據庫治理器是使用下面的設置來配置的。db2_all 工具用于設置所有數據庫分區上的數據庫配置和數據庫治理器配置。清單 10. 更新數據庫治理器配置的語句db2_all update dbm cfg using cpuspeed 2.282997e-007 intra_parallel NO comm_bandwidth 100.000000db2_all update db cfg for DSS_DB using locklist 2450 dft_degree 1 maxlocks 60  avg_appls 1 stmtheap 16384 dft_queryopt 5創建數據庫分區組和表空間使用以下語句創建數據庫分區組和表空間。可以將這些語句復制到一個名為 STORAGE.ddl 的文件中,然后使用下面的命令執行它們:db2 -tvf STORAGE.ddl -z storage.log清單 11. 創建數據庫分區組和表空間的語句CONNECT TO DSS_DB;---------------------------------------------------- DDL Statements for DATABASE PARTITION GROUPS ----------------------------------------------------CREATE DATABASE PARTITION GROUP "FACT_GROUP" ON DBPARTITIONNUMS(0,1,2,3);CREATE DATABASE PARTITION GROUP "DATE_GROUP" ON DBPARTITIONNUMS(1);CREATE DATABASE PARTITION GROUP "PRODUCT_GROUP" ON DBPARTITIONNUMS(2);CREATE DATABASE PARTITION GROUP "STORE_GROUP" ON DBPARTITIONNUMS(3);COMMIT WORK;-------------------------------------- DDL Statements for TABLESPACES --------------------------------------CREATE REGULAR TABLESPACE FACT_SMS IN DATABASE PARTITION GROUP FACT_GROUPPAGESIZE 4096 MANAGED BY SYSTEMUSING ('d:databasefact_tbsp0') ON DBPARTITIONNUMS (0)USING ('d:databasefact_tbsp1') ON DBPARTITIONNUMS (1)USING ('d:databasefact_tbsp2') ON DBPARTITIONNUMS (2)USING ('d:databasefact_tbsp3') ON DBPARTITIONNUMS (3)EXTENTSIZE 32PREFETCHSIZE AUTOMATICBUFFERPOOL IBMDEFAULTBPOVERHEAD 7.500000TRANSFERRATE 0.060000NO FILE SYSTEM CACHING DROPPED TABLE RECOVERY ON;CREATE REGULAR TABLESPACE DATE_SMS IN DATABASE PARTITION GROUPDATE_GROUP PAGESIZE 4096 MANAGED BY SYSTEMUSING ('d:databasedate_group') ON DBPARTITIONNUMS (1)EXTENTSIZE 32PREFETCHSIZE AUTOMATICBUFFERPOOL IBMDEFAULTBPOVERHEAD 7.500000TRANSFERRATE 0.060000NO FILE SYSTEM CACHING DROPPED TABLE RECOVERY ON;CREATE REGULAR TABLESPACE PRODUCT_SMS IN DATABASE PARTITION GROUPPRODUCT_GROUP PAGESIZE 4096 MANAGED BY SYSTEMUSING ('d:databaseproduct_group') ON DBPARTITIONNUMS (2)EXTENTSIZE 32PREFETCHSIZE AUTOMATICBUFFERPOOL IBMDEFAULTBPOVERHEAD 7.500000TRANSFERRATE 0.060000NO FILE SYSTEM CACHING DROPPED TABLE RECOVERY ON;CREATE REGULAR TABLESPACE STORE_SMS IN DATABASE PARTITION GROUPSTORE_GROUP PAGESIZE 4096 MANAGED BY SYSTEMUSING ('d:databasestore_group') ON DBPARTITIONNUMS (3)EXTENTSIZE 32PREFETCHSIZE AUTOMATICBUFFERPOOL IBMDEFAULTBPOVERHEAD 7.500000TRANSFERRATE 0.060000NO FILE SYSTEM CACHING DROPPED TABLE RECOVERY ON;COMMIT WORK;-- Mimic tablespaceALTER TABLESPACE SYSCATSPACE PREFETCHSIZE AUTOMATIC OVERHEAD 7.500000 TRANSFERRATE 0.060000;ALTER TABLESPACE TEMPSPACE1 PREFETCHSIZE AUTOMATIC OVERHEAD 7.500000 TRANSFERRATE 0.060000;ALTER TABLESPACE USERSPACE1 PREFETCHSIZE AUTOMATIC OVERHEAD 7.500000 TRANSFERRATE 0.060000;COMMIT WORK;-------------------------------------------------- Update the bufferpool to use 1000 4K pages --------------------------------------------------ALTER BUFFERPOOL IBMDEFAULTBP SIZE 1000;COMMIT WORK;CONNECT RESET;注重:表空間被定義為 "NO FILE SYSTEM CACHING",以避免文件系統緩存歪曲測試各種方法時得到的評測結果。使用 db2batch 工具評測性能db2batch 程序用于運行 清單 2 中的主查詢。為了使用 db2batch 命令運行該查詢,需要將查詢保存在一個以分號結尾的文件中,并使用以下選項,使 db2batch 工具查看計時情況:清單 12. 使用 db2batch 評測查詢的性能db2batch -d <dbname> -f <input_file> -i <elapsed_time> -iso <isolation level>-o p <perf_detail> o <optlevel> r <rows_out> -r <result_file>其中 <dbname> 是數據庫名稱,<input_file> 是以分號結尾、包含查詢的文件。-iso <isolation level>:在我們的測試中,默認隔離級別是 CS,但是默認情況下 db2batch 工具使用隔離級別 RR。假如使用隔離級別 RR 執行一個查詢,那么使用隔離級別 CS 創建的 MQT 不會被考慮。為了解決這個問題,可以在 db2batch 命令中使用 -iso 選項和隔離級別 CS,以便查詢選擇 MQT。而且,應用程序可使用默認的 CS 隔離級別,不帶 -iso 選項運行 db2batch 會導致它使用 RR 隔離級別,并可能導致鎖爭用。-o - options options:p <perf_detail>: 性能具體信息。返回數據庫治理器、數據庫、應用程序和語句的快照(只有在自動提交關閉,且處理的是單個語句,而非語句塊時,才返回語句快照)。另外還返回緩沖池、表空間和 FCM的快照(只有在多數據庫分區環境中才會返回 FCM 快照)。 對于例子 p 5,我們使用最具體的輸出,但是也可以使用不同級別的性能輸出。o <optlevel>: 查詢優化級別。(本文使用優化級別 5,這里不需要顯式地指定這個優化級別,因為它是數據庫的默認優化級別,如 清單 10 所示。)r <rows_out>: 所獲取且將發送到輸出的行數。我們的例子 r 0 不發送行。-r <result_file>: 結果文件。在我們的例子中,results.txt 是輸出文件名,db2batch 將結果輸出到該文件中。在本文中,我們使用:db2batch -d DSS_DB -f QUERY1.SQL -i complete -iso CS -o p 5 o 5 r 0 -r <output filename>提高查詢性能的方法在本節中,讓我們逐步了解用于提高 清單 2 中描述的查詢的性能的各種不同方法。在討論任何方法之前,必須創建基本的事實表和維度表。步驟 A:創建好表空間之后,就要創建事實表和維度表。可以將 SKAPOOR 改為符合您自己環境的模式名。這樣做時,務必更新 清單 2 中的查詢,以反映適當的模式名。可以將下面的語句復制到一個名為 TEST1.ddl 的文件中,然后使用以下命令來執行該文件:db2 -tvf TEST1.ddl -z test1.log清單 13. TEST1.ddl 的內容CONNECT TO DSS_DB;----------------------------------------------------- DDL Statements for table "SKAPOOR "."SALES_FACT"---------------------------------------------------CREATE TABLE "SKAPOOR "."SALES_FACT" ( "DATE_ID" DATE , "PRODUCT_ID" INTEGER , "STORE_ID" INTEGER , "QUANTITY" INTEGER , "PRICE" INTEGER , "TRANSACTION_DETAILS" CHAR(100) )  DISTRIBUTE BY HASH("DATE_ID")   IN "FACT_SMS" ;--------------------------------------------------- DDL Statements for table "SKAPOOR "."DATE_DIM"-------------------------------------------------CREATE TABLE "SKAPOOR "."DATE_DIM" ( "DATE_ID" DATE NOT NULL , "MONTH" INTEGER , "QUARTER" INTEGER , "YEAR" INTEGER )  IN "DATE_SMS" ;-- DDL Statements for primary key on Table "SKAPOOR "."DATE_DIM"-- DATE_ID is the unique identifierALTER TABLE "SKAPOOR "."DATE_DIM"ADD PRIMARY KEY("DATE_ID");------------------------------------------------------ DDL Statements for table "SKAPOOR "."PRODUCT_DIM"----------------------------------------------------CREATE TABLE "SKAPOOR "."PRODUCT_DIM" ( "PRODUCT_ID" INTEGER NOT NULL , "PRODUCT_DESC" CHAR(20) , "MODEL" CHAR(10) , "MAKE" CHAR(10) )  IN "PRODUCT_SMS" ;-- DDL Statements for primary key on Table "SKAPOOR "."PRODUCT_DIM"-- PRODUCT_ID is the unique identifierALTER TABLE "SKAPOOR "."PRODUCT_DIM"ADD PRIMARY KEY("PRODUCT_ID");---------------------------------------------------- DDL Statements for table "SKAPOOR "."STORE_DIM"--------------------------------------------------CREATE TABLE "SKAPOOR "."STORE_DIM" ( "STORE_ID" INTEGER NOT NULL , "LOCATION" CHAR(15) , "DISTRICT" CHAR(15) , "REGION" CHAR(15) )  IN "STORE_SMS" ;-- DDL Statements for primary key on Table "SKAPOOR "."STORE_DIM"-- STORE_ID is the unique identifierALTER TABLE "SKAPOOR "."STORE_DIM"ADD PRIMARY KEY("STORE_ID");COMMIT WORK;CONNECT RESET;步驟 B:創建好表后,將數據插入到三個維度表中,并根據您自己的環境調整模式:清單 14. 填充 DATE_DIM 表db2 -td@ -vf date_insert.txt -z date_insert.log清單 15. 填充 PRODUCT_DIM 表db2 -td@ -vf product_insert.txt -z product_insert.log清單 16. 填充 STORE_DIM 表db2 -td@ -vf store_insert.txt -z store_insert.log這三個文件的內容是:DATE_DIM 表被填入 2006 年所有 365 天的值。清單 17. date_insert.txt 的內容connect to dss_db@begin atomic declare cnt INT default 1; declare dat DATE default '01/01/2006'; declare yer INT default 2006; declare quart INT default 1;while (cnt <= 365) doif (int(dat + cnt DAYS)/100) between 200601 and 200603 then  set quart=1;elseif (int(dat + cnt DAYS)/100) between 200604 and 200606 then  set quart=2;elseif (int(dat + cnt DAYS)/100) between 200607 and 200609 then  set quart=3;elseif (int(dat + cnt DAYS)/100) between 200610 and 200612 then  set quart=4;end if;insert into SKAPOOR.DATE_DIM values (dat + cnt DAYS,(int(dat + cnt DAYS)/100) - 200600,quart,yer); set cnt=cnt+1;end while;end@connect reset@PRODUCT_DIM 表被填入 60,000 種產品。清單 18. product_insert.txt 的內容connect to dss_db@drop sequence seq1@drop sequence seq2@create sequence seq1 as integer start with 1 increment by 1@create sequence seq2 as integer start with 1 increment by 1@begin atomic  declare cnt INT default 1;  while (cnt < 60001) doinsert into SKAPOOR.PRODUCT_DIM values (nextval for SEQ2,'product desc' concat char(nextval for SEQ1),'model ' concat char(integer(rand()*1000)),'maker ' concat char(integer(rand()*500)));set cnt=cnt+1;end while;end@drop sequence seq1@drop sequence seq2@connect reset@STORE_DIM 表被填入 201 家商店。清單 19. store_insert.txt 的內容connect to dss_db@drop sequence seq2@create sequence seq2 as integer start with 0 increment by 1@begin atomicdeclare cnt INT default 1;while (cnt < 202) do  insert into SKAPOOR.STORE_DIM values (nextval for SEQ2,'location' concat char(integer(rand()*500)),'district' concat char(integer(rand()*10)),'region' concat char(integer(rand()*5))  );  set cnt=cnt+1;end while;end@drop sequence seq2@connect reset@步驟 C:將數據插入到 SALES_FACT 表中。根據您自己的環境調整模式。在我們的測試環境中,將數據插入到事實表花了約一個半小時的時間。清單 20. 填充 SALES_FACT 表db2 -td@ -vf sales_fact_insert.ddl -z sales_fact_insert.log清單 21. sales_fact_insert.ddl 的內容connect to dss_db@VALUES (CURRENT TIMESTAMP)@begin atomic  declare cnt INT default 1;  declare cnt1 INT default 1;  declare dat DATE default '01/01/2006';  while (cnt <= 365) doINSERT INTO SKAPOOR.SALES_FACTwith v(DATE_ID, PRODUCT_ID, STORE_ID, QUANTITY, PRICE, TRANSACTION_DETAILS, U_ID) as (values(dat + CNT1 DAYS, 1, 1, 1, 1, '', 1) union all select DATE_ID, int(rand()*59999) + 1, int(rand()*200), int(rand()*50) + 1, INT(RAND()*200 + 1), RESERVE, U_ID + 1 from  v where U_ID < 60000) select date_id, product_id, store_id, quantity, price, transaction_details from v; set cnt1 = cnt1 + 1; set cnt = cnt + 1;  end while;end@VALUES (CURRENT TIMESTAMP)@connect reset@注重:在 清單 21 中,SALES_FACT 表是在一次事務處理中填充的,這需要大量的磁盤空間來作日志記錄。為了降低日志記錄的影響,可以創建一個存儲過程,并分步提交插入內容:清單 22. 填充 SALES_FACT 表的另一種方法connect to dss_db@VALUES (CURRENT TIMESTAMP)@-- Create a procedure to populate the SALES_FACT table-- committing the inserts in stages to reduce the impact-- of loggingcreate procedure salesFactPopulate()specific salesFactPopulatelanguage sqlbegin  declare cnt INT default 1;  declare cnt1 INT default 1;  declare dat DATE default '01/01/2006';  while (cnt <= 365) doINSERT INTO SKAPOOR.SALES_FACTwith v(DATE_ID, PRODUCT_ID, STORE_ID, QUANTITY, PRICE, TRANSACTION_DETAILS, U_ID) as(  values(dat + CNT1 DAYS, 1, 1, 1, 1, '', 1) union all  select DATE_ID, int(rand()*59999) + 1, int(rand()*200), int(rand()*50) + 1, INT(RAND()*200 + 1), RESERVE, U_ID + 1 from vwhere U_ID < 60000)select date_id, product_id, store_id, quantity, price, TRANSACTION_DETAILS from v;commit work;set cnt1 = cnt1 + 1;set cnt=cnt+1;  end while;end@-- populate the SALES_FACT tableinvoke salesFactPopulate@VALUES (CURRENT TIMESTAMP)@connect reset@步驟 D:為了理解各種不同的方法對所選查詢訪問計劃的有怎樣的影響,我們需要解釋(Explain)查詢,以查看 DB2 查詢優化器選擇的訪問計劃。為此,可使用 EXPLAIN 工具,這要求存在 EXPLAIN 表。為了創建 EXPLAIN 表,執行以下步驟:1、進入 sqllibmisc 目錄所在的位置。2、在我們的測試環境中,這個位置為 "C:Program FilesIBMSQLLIBMISC"。3、執行 db2 connect to dss_db。4、執行 db2 -tvf EXPLAIN .DDL。
標簽: DB2 數據庫
主站蜘蛛池模板: 中文字幕国产一区二区 | 日韩中文字幕不卡 | 特黄特色的大片观看免费视频 | 国产精品久久久久久久一区探花 | 亚洲精品国产精品国自产网站按摩 | 秋霞无码一区二区 | 狠狠躁日日躁夜夜躁2022麻豆 | 91张津瑜 午夜在线播放 | 国产老女人精品毛片久久 | 国产精品国产馆在线真实露脸 | 一区影视 | 日韩精品久久久久久免费 | 翔田千里高潮在线播放 | 在线视频日韩欧美 | 日本一卡二卡四卡无卡乱码视频免费 | 亚洲欧美中文字幕 | 亚洲欧美人色综合婷婷久久 | 久久av片| 秋霞成人午夜鲁丝一区二区三区 | 久久久久久久久毛片精品 | 欧美激情欲高潮视频在线观看 | 风间由美乳巨码无在线 | 国产足控在线网站 | 日韩精品视频免费专区在线播放 | 成x99人av在线www | 最新av片 | 国产欧美一区二区精品老汉影院 | 99久久精品国产91久久久 | 亚洲热在线观看 | 九九热视频在线免费观看 | 成人羞羞国产免费软件 | 国产一区二区三区四区在线观看 | 精品国精品国产自在久国产87 | 国产欧美一区二区三区四区 | 亚洲欧美视频在线播放 | jizz另类| 国产真人真事毛片 | 久草在线观看资源 | 久久免费影院 | 欧美乱妇高清无乱码在线观看 | 色五月色开心色婷婷色丁香 | 91久久国产露脸精品国产闺蜜 | 亚洲精品国产a久久久久久 51国偷自产一区二区三区 | 亚洲免费在线观看av | 国产精品偷窥熟女精品视频 | 日韩欧美黄 | 国产特级毛片aaaaaa喷潮 | 国产精品一区二区三区在线播放 | 国产色视频一区二区三区 | 精品一区二区三区毛片 | 欧美国产激情18 | 成人亚洲一区二区 | 黄色不卡| 91在线精品观看 | 国产日韩久久久久 | 男人猛躁进女人免费视频夜月 | 天堂中文字幕av | 欧美激情一区二区久久久 | 国产美女永久无遮挡 | 久久久久国产免费 | 人妻少妇偷人精品视频 | 中文字幕无码第1页 | 国产精品99久久久久久猫咪 | 无码中文字幕波多野结衣 | 欧美体内she精高潮 欧美体内谢she精2性欧美 | 久久久久中文 | 成人黄色av网站 | 黄色欧美网站 | 国产伦精品一区二区三区免 | 四虎永久在线精品无码视频 | 日韩99在线 | 中文 | 中文字幕大全 | 99国产超薄肉色丝袜交足 | 艹逼久久| 一二三区av | 91啦丨九色丨刺激 | 人乳喂奶hd播放 | 青青草一区二区 | www爱爱| www国产在线 | 亚洲性激情 | 玖玖精品视频 | 浓毛老太交欧美老妇热爱乱 | 性饥渴艳妇性色生活片在线播放 | 欧美牲交a欧美牲交aⅴ免费真 | ⅹ一art唯美在线观看 | 999热精品 | 国产一级揄自揄精品视频 | 精品国产精品三级精品av网址 | xox0人妖国产另类 | 日本a级c片免费看三区 | 欧美情侣性视频 | 精品小视频在线观看 | 国产九色视频 | 国产偷久久一级精品av小说 | 欧美激情在线一区 | 国产av一区二区三区传媒 | 亚洲二区视频 | 亚洲午夜1000理论片aa | a级老太婆毛片老太婆毛片 a级毛片,黄,免费观看 m | 免费大片黄在线观看视频网站 | 夜夜爽网站 | 亚洲综合在线五月 | 欧美亚洲国产成人一区二区三区 | 久久久精品中文字幕麻豆发布 | 亚洲人成影院在线观看 | 久久久久久久女国产乱让韩 | 亚洲天天做 | 国产中文字字幕乱码无限 | 中国69av| 久久久日韩精品一区二区三区 | 亚洲精品乱码久久久久红杏 | 女女互揉吃奶揉到高潮视频 | 国内外成人激情视频 | 日韩和的一区二在线 | 五月婷婷在线播放 | 超碰狠狠操 | 国产一区二区三区 | mm31美女爽爽爽爱做视频vr | 国产精品免费一区二区三区四区 | 人人爽爽爽| 午夜精品久久久久久久四虎 | 国产又色又爽又黄的视频在线观看 | 99视频久久 | 久久岛国搬运工 | 国产精品高潮呻吟久久久久久 | 撸撸综合色av | 免费看黄色三级三级 | 粉嫩久久99精品久久久久久夜 | 无人码一区二区三区视频 | av自拍偷拍 | 淫片aaa| 国产一区精品在线观看 | 在线观看免费黄色 | 亚洲区小说区图片区qvod | 网址你懂的在线 | 农民人伦一区二区三区剧情简介 | 欧洲性猛交 | 97人人艹 | 男女视频一区二区 | 天天插综合网 | 美女被张开双腿日出白浆 | 国产一区二区激情 | 国产精品丝袜美腿一区二区三区 | 日本泡妞xxxx免费视频软件 | 欧美黄色免费 | 欧美性大战久久久久久久蜜桃 | 亚洲视频一区在线 | 亚洲色成人网站www永久男男 | 欧美高清hd18日本 | 国产91丝袜在线18 | 国产精品久久久久国产三级传媒 | 亚洲日韩乱码中文字幕 | 日韩欧美一区二区三区在线 | 国产揄拍国内精品对白 | 日韩中文字幕综合 | 四虎视频国产精品免费 | www.av免费| 国产精品久久久免费视频 | av特黄| 日韩爱爱片 | 亚洲色图欧美在线 | 色鬼久久| 777久久久精品一区二区三区 | 欧美精品色 | 亚洲综合网国产精品一区 | 久久先锋 | 黄视频免费在线观看 | 亚洲码无人客一区二区三区 | tube国产麻豆 | 色哒哒影院 | 精品中文字幕在线 | 一级少妇淫片免费观看 | 亚洲国产一区在线 | 成人午夜又粗又硬又大 | 欧美日韩有码 | 野外性满足hd | 麻豆av一区二区三区久久 | 国产69精品久久777的优势 | 亚洲中文字幕aⅴ天堂 | 99国内精品久久久久久久 | 日韩精品免费在线观看 | 黄色片一级片 | 成人av综合 | 欧美三级久久 | 老女人毛片50一60岁 | 久久久久女人精品毛片九一韩国 | 日韩在线视频免费看 | 上海富婆spa又高潮了 | av在线播放免费观看 | 欧美人与禽猛交狂配 | 免费在线观看日韩av | 久久在线视频免费观看 | 日韩在线激情视频 | 国产视频第二页 | 国产99久久九九精品的功能介绍 | 欧美日韩国产精品成人 | 国产精品三级一区二区 | 亚洲va在线va天堂va偷拍 | 国产精品99久久久久久董美香 | 国产精品无码一区二区在线看 | 亚洲欧美日韩中文在线 | 欧美色图影院 | 丰满岳乱妇在线观看视频国产 | 欧美bbbb内谢 | 国产女人第一次做爰视频 | 亚洲国产综合精品久久久久久 | 免费观看成人av | 国产一区二区三区在线视频 | 欧美精品毛片 | 国产成人精品日本亚洲77上位 | 香蕉91视频| 91在线精品李宗瑞 | 性视频毛茸茸 | 夜夜嗨一区二区三区 | 国产精品久久久久久免费播放 | 国产在线精品一区二区夜色 | 亚洲三级影视 | 日本少妇影院 | 精品一区二区三区久久 | 亚洲性av网站| 日韩亚洲欧美在线观看 | 久久久国产乱子伦精品 | 国产精品精品久久久 | 国产精品无码无在线观看 | 国产精品一区二区人人爽 | 午夜影院一区二区 | av资源网在线 | 亚洲中文字幕久久精品蜜桃 | 剧情av在线| 免费看男女做爰爽爽 | 亚洲无限看| 精品网站999 | 天天狠天天插 | 久久久久久久综合狠狠综合 | 美女视频黄是免费 | 九九精品网 | 亚洲一区av无码专区在线观看 | 午夜福利试看120秒体验区 | 鲁丝一区二区三区 | 成人永久免费 | 春草 | 欧美成年人视频 | 绿帽在线观看99av | 国产精品视频在线观看免费 | 亚洲午夜久久久久 | av免费网址 | www精品国产 | 特黄三级 | 国产午夜成人免费看片 | 一本色道久久综合狠狠躁 | 91嫩草精品 | 久久国产福利 | 国产乱在线 | 国产色综合网 | 免费观看羞羞视频网站 | 亚洲精品一品区二品区三品区 | 欧美日韩在线高清 | 一级做a爱片性色毛片 | 国产深夜视频在线观看 | 欧美色插 | 成人动漫在线观看 | 狠狠色噜噜狠狠狠狠色吗综合 | 性色av一区二区三区无码 | 国产裸体丰满白嫩大尺度尤物可乐 | 日日躁狠狠躁夜夜躁av中文字幕 | 国产精品国产三级国产普通话蜜臀 | 人人妻人人澡人人爽超污 | 久视频在线观看 | 成人精品一区二区三区在线观看 | 日韩人妻无码免费视频一区二区三区 | 久草网址| 欧美激情啪啪 | 色哟哟在线视频 | 2012中文字幕在线视频 | 久久重口味 | 激情综合一区二区三区 | 国内福利视频 | 少妇熟女视频一区二区三区 | 成人免费视频免费观看 | 国内偷拍精品视频 | 欧美久久久久久久久久久久 | 国产v在线观看 | 古装大尺度激情呻吟视频 | 九九九热精品 | 免费观看成人鲁鲁鲁鲁鲁视频 | 久草新视频| 青娱乐极品在线 | 97se狠狠狠狠狼鲁亚洲综合色 | 欧美综合人人做人人爱 | 国产乱淫av公 | 95精品视频 | 国产精品久久久久久久久久大牛 | 国产黄色小说 | 亚洲天堂不卡 | 捆绑japanhdxxxxvideos | 三上悠亚三级 | 日本无码人妻精品一区二区蜜桃 | www.婷婷亚洲基地 | 免费一区二区在线观看 | 老子影院午夜精品无码 | 国产二级一片内射视频播放 | 老女人乱淫 | 蜜桃av在线 | 大尺度做爰床戏呻吟色戒韩国 | 特黄三级又爽又粗又大 | 国产免费极品av吧在线观看 | 亚洲人屁股眼子交1 | www.久久综合| 无码熟妇人妻av在线网站 | 欧美另类tv | 亚洲人成网址 | 亚洲日本网站 | 亚洲欧美婷婷六月色综合 | 国产crm系统91在线 | 操综合网 | 激情一区二区 | 日日网站 | 国产成人剧情av麻豆果冻 | 欧亚乱熟女一区二区在线 | 欧美午夜精品久久久久免费视 | 国产91香蕉| 无遮挡啪啪摇乳动态图 | 亚洲桃花综合 | 精品久久人人妻人人做精品 | 强行撕衣强行糟蹋三级韩国 | 一本色道久久综合亚洲精品酒店 | 久久婷婷五月综合国产尤物app | 国产亚洲91 | 成人乱人伦精品小说 | 丰满婷婷久久香蕉亚洲新区 | 91亚洲精华国产精华精华液 | 99久久精品国产免费 | 国产偷国产偷亚洲清高网站 | 日韩精品无码视频一区二区蜜桃 | 国产伦精品一区二区 | 日韩福利视频一区 | 97伦伦午夜电影理伦片 | 日本三级视频网站 | 天天色天天操天天 | 香港三级日本三级妇三级 | 国产ts在线观看 | aaa级吃奶摸下免费视频 | 想要xx·m3u8色视频 | 黄色国产精品视频 | 国产第一页在线播放 | av免费在线播放 | 欧美成人生活片 | 亚洲精品成人天堂一二三 | 亚洲欧美国产精品久久 | 亚洲视屏在线 | 女同一区 | 国产精品成人一区二区艾草 | 国产夫妻小视频 | 久久久久99精品国产片 | 亚洲人在线观看 | 国产精品对白久久久久粗 | 婷婷在线视频观看 | 人人爱国产| 催眠淫辱の教室3在线观看 村上凉子在线播放av88 | 欧美午夜性春猛交xxxx按摩师 | 日产成品片a直接观看 | 中文字幕在线观看一区二区三区 | 在线视频日韩精品 | 大奶毛片 | 91精品看片 | 亚洲一区二区三区麻豆 | 无码中文字幕日韩专区 | 久久久久香蕉国产线看观看伊 | 成人vr视频专区 | 粗大猛烈进出高潮视频大全 | 波多野结衣亚洲一区 | 成人中文字幕在线观看 | 国产人与禽zoz0性伦多活几年 | 牛牛精品一区二区 | 国产又粗又猛又爽又黄的视频一 | 国产视频日韩 | 国产高清日韩 | 国产一区在线免费 | 色啊色 | 日本aaaa级毛片| 日本性猛交 | 97国产精品人人爽人人做 | 一级黄色免费网站 | 久草免费在线观看 | 精品国产乱子伦 | 老少交欧美另类 | 免费国产在线麻豆网站 | 少妇下蹲露大唇无遮挡 | 无码孕妇孕交在线观看 | 亚洲一区 日韩精品 中文字幕 | 亚洲色精品aⅴ一区区三区 国产黄大片在线观看 | 亚洲精品视频久久久 | 亚洲免费毛片 | 五月天激情在线 | 欧美多毛肥胖老妇做爰 | 亚洲视频高清 | 欧美在线视频你懂的 | 99久久精品国产片果冻的功能特点 | 色综合久久久久综合体桃花网 | 欧美成人在线网站 | 黄色av资源| 亚洲一区二区综合 | www.激情五月 | 国产精品99久久久久久小说 | 在线精品亚洲观看不卡欧 | 粉嫩一区二区三区四区公司1 | 亚洲天堂免费观看 | 国产精品特级毛片一区二区三区 | 最近中文字幕在线mv视频在线 | 妩媚尤物娇喘无力呻吟在线视频 | 亚洲线精品一区二区三区 | 天天看国91产在线精品福利桃色 | 国产办公室秘书无码精品99 | 波多野结衣国产在线 | 久久黄网 | 激烈娇喘叫1v1高h糙汉 | 久久综合伊人77777麻豆 | 韩国久久久久久 | 尤物视频网站在线观看 | 久久免费福利视频 | 亚洲最大的成人网站 | 日本六九视频69jzz | 国产欧美在线观看不卡 | 日韩中文字幕在线不卡 | 精品一区二区三区无码免费视频 | 青青久草在线视频 | 久久亚洲高潮流白浆av软件 | 女人性做爰100部免费 | 搡女人真爽免费午夜网站 | 一级真人毛片 | 欧美成人二区 | 亚洲国产成人精品女人久久久 | 成年人午夜视频在线观看 | 国产精品久久久久久久久电影网 | 久久91精品国产 | 亚洲精品国产乱码在线看蜜月 | 欧美一a一片一级一片 | 亚洲精品久久久日韩美女极品 | 久久精品综合视频 | 国产一区二区精品久久岳 | 51自拍视频在线观看 | 无遮挡aaaaa大片免费看 | 国产精品永久久久 | 亚洲最新av| 99国产精品久久久久久久成人热 | 国产一区二区三区四区五区六区 | 国内视频精品 | 国产精品理人伦一区二区三区 | 毛片毛片毛片毛片毛片毛片毛片毛片 | 夜夜春很很躁夜夜躁 | av黄色毛片 | 中国女人内谢69xxxx免费视频 | 国产一区亚洲二区三区 | 我的公把我弄高潮了视频 | 97偷拍少妇性按摩spa全程 | 性久久久久久久久久 | 91免费.| 免费99| 天天操天天操天天操天天操 | 久久久久久久国产精品美女 | 久久勉费视频 | 亚洲国产欧美日韩在线 | 成人激情视频网 | a级黄色一级片 | 无码av波多野结衣久久 | 最新在线黄色网址 | www国产亚洲精品久久网站 | 又色又爽又激情的59视频 | 小镇姑娘国语版在线观看免费 | 久色视频在线播放 | 精品午夜久久 | 女人解开奶罩喂男人吃奶 | 国产精品videossex国产高清 | 无码福利一区二区三区 | 欧美大波乳人伦免费视频 | 天天躁日日躁狠狠躁精品推荐 | 一级免费看 | 奇米成人网| 无码va在线观看 | 久久久无码精品国产一区 | 肉肉视频在线观看 | 91精品国产手机 | 国产精品人人做人人爽 | 综合激情亚洲丁香社区 | 免费麻豆国产一区二区三区四区 | 欧美成人性色 | www国产亚洲精品久久网站 | 久久发布国产伦子伦精品 | 久久久视频在线 | 欧美色图亚洲天堂 | 国产第8页 | 成人福利视频在 | 乳孔很大能进去的av番号 | 亚洲成av人片香蕉片 | 人人妻久久人人澡人人爽人人精品 | 欧美第一夜 | 一级特级毛片 | 国产妇女馒头高清泬20p多 | 香港三级日本三级三69 | 高清欧美性猛交xxxx黑人猛交 | 欧美亚洲高清 | 极品新婚夜少妇真紧 | 98久久| 午夜福利国产精品久久 | 舒淇裸体午夜理伦 | 人妻中文字幕av无码专区 | 丝袜美腿av在线 | 女同性恋毛片 | 波多野结衣aⅴ在线 | 亚洲免费影院 | 天天综合网天天综合色 | 亚洲免费av网 | 色狠狠色狠狠综合天天 | 福利网址在线 | 国产成人三级一区二区在线观看一 | 在线看日韩 | 天天综合亚洲综合网天天αⅴ | 三级毛片免费播放 | 亚洲天堂一 | 狠狠色噜噜狠狠狠狠色吗综合 | 狠狠色综合网站久久久久久久 | 亚洲色偷偷偷综合网 | 人人干av | 韩日午夜在线资源一区二区 | 在线观看色网 | 99精品国产在热久久 | 亚洲色欲色欲www在线观看 | 少妇在线观看888视频 | 日本亚洲最大的色成网站www | 色综合天天天天做夜夜夜夜做 | 精品久久久久久久久久久国产字幕 | 久久久久久a亚洲欧洲av冫 | 亚洲小视频在线观看 | 一区二区三区国产精 | 欧美日韩欧美日韩在线观看视频 | 91精品国产99久久久久 | 国产99久久九九精品的功能介绍 | 欧美性插b在线视频网站 | 国产av无码专区亚洲版综合 | 亚洲精品一区二区三区大桥未久 | 欧美激烈精交gif动态图 | 国产内射爽爽大片视频社区在线 | 91精品国产99久久久久 | 孕妇怀孕高潮潮喷视频孕妇 | 91精品国产影片一区二区三区 | 成人无码一区二区三区 | 亚洲视频一区 | 97人妻天天摸天天爽天天 | 国产高清一区在线观看 | 一区免费在线观看 | 新亚洲天堂 | 免费在线观看的av | 91在线porny国产在线看 | 日本洗澡bbw| 88av在线播放 | 在线资源站| 久久久久国产精品嫩草影院 | 日韩国产亚洲欧美 | 亚洲美女网站 | 青青热久免费精品视频在线播放 | 国产让女高潮的av毛片 | 亚洲第二页 | 日日摸日日碰人妻无码老牲 | 香蕉a| 婷婷综合久久中文字幕蜜桃三电影 | 91成人在线观看喷潮 | 成人ay| 国产一区二区三区免费视频 | 中文字幕在线视频第一页 | 婷婷六月天在线 | videossex性糟蹋重 | 色综合五月婷婷 | 日韩av中文 | 久久婷婷丁香五月综合五 | 亚洲熟女乱综合一区二区 | 亚洲拍拍 | 国产ts三人妖大战直男 | 女人十八毛片嫩草av | 国产精品一品二区三区四区18 | 亚洲色在线无码国产精品不卡 | 欧美天堂一区二区 | 日本精品视频网站 | 免费看黄色小视频 | 国产在线观看无码免费视频 | 国产精品av久久久久久无 | 中文字幕精品视频在线观看 | 又黄又爽又色qq群 | 亚洲伦理天堂 | 午夜色网| 精品无人码麻豆乱码1区2区 | 午夜丰满少妇高清毛片1000部 | 午夜精品久久久久久久91蜜桃 | 懂色av一区二区三区久久久 | 一区二区小视频 | 又大又粗欧美黑人aaaaa片 | 内射少妇一区27p | 婷婷五月小说 | 性猛交xxxx乱大交中国 | 在线观看免费小视频 | 国产成人精品网站 | 性xxxx视频播放免费 | 欧美日韩免费观看一区=区三区 | 国产精品入口麻豆原神 | 国产极品尤物 | 免费观看性欧美大片无片 | 日韩中文字幕亚洲欧美 | 欧美日韩123 | 国产一区二区亚洲精品 | 亚洲ooo欧洲1 | www.69视频 | 欧美性受xxxx黒人xyx性爽 | 污网站在线观看免费 | 色诱av手机版 | 国产乱色国产精品播放视频 |